Uma sequência de chaves é definida como uma sequência que consiste nos caracteres *()[]
nos quais as chaves correspondem corretamente:
[brace-string] ::= [unit] || [unit] [brace-string]
[unit] ::= "" || "*" || "(" [brace-string] ")" || "[" [brace-string] "]"
Esta é uma cadeia de chaves válida:
((())***[]**)****[(())*]*
Mas estes não são:
)(
**(**[*](**)
**([*)]**
Sua tarefa é escrever um programa (ou função) que, dado um número inteiro positivo n
, aceite um número como entrada e produza (ou retorne) todas as cadeias de comprimento válidas n
.
Especificações
- Você pode imprimir as strings em qualquer ordem.
- Você pode produzir como uma lista ou uma sequência separada por um caractere diferente.
- Seu programa deve manipular 0 corretamente. Existe uma possível string de comprimento 0, que é a string vazia
""
. - Isso é código-golfe , então a resposta mais curta e válida - medida em bytes - vence.
Casos de teste
0.
1. *
2. ** () []
3. *** ()* []* (*) [*] *() *[]
4. **** ()** []** (*)* [*]* (**) **() **[] *(*) *[*] (()) ()() ()[] ([]) [**] [()] [[]] []() [][] *()* *[]*