Hoy su desafío es producir todos los paréntesis completos posibles de una expresión.
Su entrada es una sola línea de ASCII imprimible que contiene uno o más términos separados por operadores. La entrada también puede contener espacios; debe ignorarlos. Un término es [a-zA-Z0-9]
, un operador es [^ ()a-zA-Z0-9]
. Puede suponer que la entrada siempre es válida.
Imprima todas las formas posibles de paréntesis completos de la expresión dada, separados por nuevas líneas con una nueva línea final opcional.
Hacer no :
- Términos entre paréntesis: solo entre paréntesis alrededor de los operadores.
- Reordenar los términos.
- Salida de cualquier espacio.
Ejemplo de entrada / salida:
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)
El código más pequeño en bytes gana.
!
se ajusta a la expresión regular, también lo hace ↑
, sin embargo, no ↑
puede ser parte de la entrada porque no es ASCII imprimible.
!
un operador? ¿Qué hay de↑
?