Une chaîne d'accolade est définie comme une chaîne composée des caractères *()[]dans lesquels les accolades correspondent correctement:
[brace-string] ::= [unit] || [unit] [brace-string]
[unit] ::= "" || "*" || "(" [brace-string] ")" || "[" [brace-string] "]"
Ceci est une chaîne d'accolade valide:
((())***[]**)****[(())*]*
Mais ce ne sont pas:
)(
**(**[*](**)
**([*)]**
Votre tâche consiste à écrire un programme (ou une fonction) qui, étant donné un entier positif n, prend un nombre en entrée et génère (ou renvoie) toutes les chaînes d'accolade valides de longueur n.
Caractéristiques
- Vous pouvez sortir les chaînes dans n'importe quel ordre.
- Vous pouvez produire une liste ou une chaîne séparée par un caractère différent.
- Votre programme doit gérer correctement 0. Il existe 1 chaîne d'accolade possible de longueur 0, qui est la chaîne vide
"". - Il s'agit de code-golf , donc la réponse valide la plus courte - mesurée en octets - l'emporte.
Cas de test
0.
1. *
2. ** () []
3. *** ()* []* (*) [*] *() *[]
4. **** ()** []** (*)* [*]* (**) **() **[] *(*) *[*] (()) ()() ()[] ([]) [**] [()] [[]] []() [][] *()* *[]*