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. **** ()** []** (*)* [*]* (**) **() **[] *(*) *[*] (()) ()() ()[] ([]) [**] [()] [[]] []() [][] *()* *[]*