Oggi la tua sfida è quella di produrre tutte le possibili parentesi complete di un'espressione.
Il tuo input è una singola riga di ASCII stampabile contenente uno o più termini separati da operatori. L'input potrebbe contenere anche spazi: è necessario ignorarli. Un termine è [a-zA-Z0-9]
, un operatore è [^ ()a-zA-Z0-9]
. Si può presumere che l'input sia sempre valido.
Stampa tutti i modi possibili per racchiudere tra parentesi l'espressione data, separati da newline con un newline finale facoltativo.
Do non :
- Termini tra parentesi - solo tra parentesi attorno agli operatori.
- Riordina i termini.
- Output eventuali spazi.
Esempio di input / output:
N
N
a * b
(a*b)
x_x_0
(x_(x_0))
((x_x)_0)
a * b|c|d
(a*(b|(c|d)))
(a*((b|c)|d))
((a*b)|(c|d))
((a*(b|c))|d)
(((a*b)|c)|d)
Vince il codice più piccolo in byte.
!
si inserisce la regex, così fa ↑
, tuttavia ↑
non può essere parte dell'ingresso perché non è ASCII stampabile.
!
un operatore? Che dire↑
?