Ciąg nawiasów klamrowych jest zdefiniowany jako ciąg składający się ze znaków, *()[]
w których nawiasy klamrowe pasują poprawnie:
[brace-string] ::= [unit] || [unit] [brace-string]
[unit] ::= "" || "*" || "(" [brace-string] ")" || "[" [brace-string] "]"
To jest prawidłowy nawias klamrowy:
((())***[]**)****[(())*]*
Ale to nie są:
)(
**(**[*](**)
**([*)]**
Twoim zadaniem jest napisanie programu (lub funkcji), który przy dodatniej liczbie całkowitej n
przyjmuje liczbę jako dane wejściowe i wyjściowe (lub zwraca) wszystkie prawidłowe ciągi nawiasów o długości n
.
Dane techniczne
- Możesz wyprowadzać ciągi w dowolnej kolejności.
- Możesz generować jako listę lub ciąg znaków oddzielony innym znakiem.
- Twój program musi poprawnie obsługiwać 0. Istnieje 1 możliwy ciąg nawiasu klamrowego o długości 0, który jest pustym ciągiem
""
. - To jest golf golfowy , więc wygrywa najkrótsza ważna odpowiedź - mierzona w bajtach .
Przypadki testowe
0.
1. *
2. ** () []
3. *** ()* []* (*) [*] *() *[]
4. **** ()** []** (*)* [*]* (**) **() **[] *(*) *[*] (()) ()() ()[] ([]) [**] [()] [[]] []() [][] *()* *[]*