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