String kurung didefinisikan sebagai string yang terdiri dari karakter *()[]
di mana kawat gigi cocok dengan benar:
[brace-string] ::= [unit] || [unit] [brace-string]
[unit] ::= "" || "*" || "(" [brace-string] ")" || "[" [brace-string] "]"
Ini adalah brace-string yang valid:
((())***[]**)****[(())*]*
Tapi ini bukan:
)(
**(**[*](**)
**([*)]**
Tugas Anda adalah menulis sebuah program (atau fungsi) yang, diberi bilangan bulat positif n
, mengambil angka sebagai input dan output (atau mengembalikan) semua panjang tanda kurung yang valid n
.
Spesifikasi
- Anda dapat menampilkan string dalam urutan apa pun.
- Anda dapat menampilkan sebagai daftar atau string yang dipisahkan oleh karakter yang berbeda.
- Program Anda harus menangani 0 dengan benar. Ada 1 kemungkinan brace-string dengan panjang 0, yang merupakan string kosong
""
. - Ini adalah kode-golf , sehingga jawaban terpendek yang valid - diukur dalam byte - menang.
Uji Kasus
0.
1. *
2. ** () []
3. *** ()* []* (*) [*] *() *[]
4. **** ()** []** (*)* [*]* (**) **() **[] *(*) *[*] (()) ()() ()[] ([]) [**] [()] [[]] []() [][] *()* *[]*