Hoje, seu desafio é produzir todos os parênteses completos possíveis de uma expressão.
Sua entrada é uma única linha de ASCII imprimível que contém um ou mais termos separados por operadores. A entrada também pode conter espaços - você deve ignorá-los. Um termo é [a-zA-Z0-9]
, um operador é [^ ()a-zA-Z0-9]
. Você pode assumir que a entrada é sempre válida.
Saída de todas as formas possíveis entre parênteses completos da expressão especificada, separados por novas linhas com uma nova linha à direita opcional.
Fazer não :
- Termos entre parênteses - somente entre parênteses os operadores.
- Reordene os termos.
- Saída de quaisquer espaços.
Exemplo de entrada / saída:
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)
O menor código em bytes vence.
!
se ajusta ao regex, o mesmo acontece ↑
, no entanto, ↑
não pode fazer parte da entrada porque não é ASCII imprimível.
!
um operador? Que tal↑
?