Рядок *()[]
дужок визначається як рядок, що складається з символів, у яких дужки правильно відповідають:
[brace-string] ::= [unit] || [unit] [brace-string]
[unit] ::= "" || "*" || "(" [brace-string] ")" || "[" [brace-string] "]"
Це дійсна дужка:
((())***[]**)****[(())*]*
Але це не такі:
)(
**(**[*](**)
**([*)]**
Ваше завдання - написати програму (або функцію), яка за заданим цілим числом n
приймає число як вхід і виводить (або повертає) всі дійсні рядки дужки довжини n
.
Технічні умови
- Ви можете виводити рядки в будь-якому порядку.
- Ви можете виводити у вигляді списку або рядка, розділеного іншим символом.
- Ваша програма повинна керувати 0 правильно. Існує 1 можлива дужка-рядка довжиною 0, яка є порожньою
""
. - Це код-гольф , тому найкоротший вірний відповідь - вимірюється в байтах - виграє.
Випробування
0.
1. *
2. ** () []
3. *** ()* []* (*) [*] *() *[]
4. **** ()** []** (*)* [*]* (**) **() **[] *(*) *[*] (()) ()() ()[] ([]) [**] [()] [[]] []() [][] *()* *[]*