Tulis sebuah program yang memuat empat karakter ()[]
yang memenuhi poin-poin ini:
- Setiap tanda kurung kiri
(
memiliki tanda kurung kanan yang cocok)
. - Setiap braket kiri
[
memiliki braket kanan yang cocok]
. - Pasangan kurung dan kurung yang cocok tidak akan tumpang tindih. mis.
[(])
tidak valid karena tanda kurung tidak sepenuhnya terkandung dalam tanda kurung yang cocok, atau sebaliknya. - Karakter pertama dan terakhir adalah pasangan kurung atau kurung yang cocok. Jadi
([]([]))
dan[[]([])]
valid tetapi[]([])
tidak.
( Tata bahasa untuk format input adalah <input> ::= [<input>*] | (<input>*)
.)
Setiap pasangan kurung dan kurung yang cocok dievaluasi menjadi bilangan bulat non-negatif:
- Nilai pasangan di dalam tanda kurung yang cocok semuanya dijumlahkan . Pencocokan kosong
()
memiliki nilai0
. - Nilai pasangan di dalam tanda kurung cocok dikalikan . Pencocokan kosong
[]
memiliki nilai1
.
( Jumlah atau produk dari satu nomor adalah nomor yang sama.)
Misalnya, ([](())([][])[()][([[][]][][])([][])])
dapat dipecah dan dievaluasi sebagai 9
:
([](())([][])[()][([[][]][][])([][])]) <input>
(1 (0 )(1 1 )[0 ][([1 1 ]1 1 )(1 1 )]) <handle empty matches>
(1 0 2 0 [(1 1 1 )2 ]) <next level of matches>
(1 0 2 0 [3 2 ]) <and the next>
(1 0 2 0 6 ) <and the next>
9 <final value to output>
Contoh lain:
[([][][][][])([][][])([][][])(((((([][]))))))] <input>
[(1 1 1 1 1 )(1 1 1 )(1 1 1 )((((((1 1 ))))))]
[5 3 3 (((((2 )))))]
[5 3 3 ((((2 ))))]
[5 3 3 (((2 )))]
[5 3 3 ((2 ))]
[5 3 3 (2 )]
[5 3 3 2 ]
90 <output>
Program Anda perlu mengevaluasi dan mencetak bilangan bulat yang diwakili oleh seluruh string input. Anda dapat menganggap input tersebut valid. Kode terpendek dalam byte menang.
Alih-alih sebuah program, Anda dapat menulis fungsi yang mengambil string dan mencetak atau mengembalikan integer.