Una cadena de *()[]
llaves se define como una cadena que consiste en los caracteres en los que las llaves coinciden correctamente:
[brace-string] ::= [unit] || [unit] [brace-string]
[unit] ::= "" || "*" || "(" [brace-string] ")" || "[" [brace-string] "]"
Esta es una cadena de llaves válida:
((())***[]**)****[(())*]*
Pero estos no son:
)(
**(**[*](**)
**([*)]**
Su tarea es escribir un programa (o función) que, dado un número entero positivo n
, tome un número como entrada y produzca (o devuelva) todas las cadenas de longitud válidas de llaves n
.
Especificaciones
- Puede generar las cadenas en cualquier orden.
- Puede generar una lista o una cadena separada por un carácter diferente.
- Su programa debe manejar 0 correctamente. Hay 1 posible cadena de llaves de longitud 0, que es la cadena vacía
""
. - Este es el código de golf , por lo que gana la respuesta válida más corta, medida en bytes .
Casos de prueba
0.
1. *
2. ** () []
3. *** ()* []* (*) [*] *() *[]
4. **** ()** []** (*)* [*]* (**) **() **[] *(*) *[*] (()) ()() ()[] ([]) [**] [()] [[]] []() [][] *()* *[]*