Una stringa di parentesi graffa è definita come una stringa composta dai caratteri *()[]
in cui le parentesi graffe corrispondono correttamente:
[brace-string] ::= [unit] || [unit] [brace-string]
[unit] ::= "" || "*" || "(" [brace-string] ")" || "[" [brace-string] "]"
Questa è una stringa di parentesi graffa valida:
((())***[]**)****[(())*]*
Ma questi non sono:
)(
**(**[*](**)
**([*)]**
Il tuo compito è quello di scrivere un programma (o una funzione) che, dato un numero intero positivo n
, accetta un numero come input e output (o restituisce) tutte le stringhe di parentesi graffe valide di lunghezza n
.
specificazioni
- È possibile generare le stringhe in qualsiasi ordine.
- È possibile generare un elenco o una stringa separati da un carattere diverso.
- Il tuo programma deve gestire 0 correttamente. Esiste 1 possibile stringa di parentesi graffa di lunghezza 0, ovvero la stringa vuota
""
. - Questo è code-golf , quindi la risposta valida più breve - misurata in byte - vince.
Casi test
0.
1. *
2. ** () []
3. *** ()* []* (*) [*] *() *[]
4. **** ()** []** (*)* [*]* (**) **() **[] *(*) *[*] (()) ()() ()[] ([]) [**] [()] [[]] []() [][] *()* *[]*