Aujourd'hui, votre défi est de produire toutes les parenthèses complètes possibles d'une expression.
Votre entrée est une seule ligne ASCII imprimable contenant un ou plusieurs termes séparés par des opérateurs. L'entrée peut également contenir des espaces - vous devez les ignorer. Un terme est [a-zA-Z0-9]
, un opérateur est [^ ()a-zA-Z0-9]
. Vous pouvez supposer que l'entrée est toujours valide.
Afficher toutes les façons possibles de mettre complètement l'expression entre parenthèses, séparées par des retours à la ligne avec un retour à la ligne facultatif.
Ne pas :
- Termes entre parenthèses - entre parenthèses uniquement autour des opérateurs.
- Réorganisez les conditions.
- Sortez tous les espaces.
Exemple d'entrée / sortie:
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)
Le plus petit code en octets gagne.
!
s'adapte à l'expression régulière, ne le fait pas ↑
, cependant, ne ↑
peut pas faire partie de l'entrée car elle n'est pas imprimable en ASCII.
!
un opérateur? Et alors↑
?