Dzisiaj Twoim wyzwaniem jest utworzenie wszystkich możliwych pełnych nawiasów wyrażenia.
Dane wejściowe to pojedynczy wiersz drukowalnego kodu ASCII zawierający jeden lub więcej terminów oddzielonych operatorami. Dane wejściowe mogą również zawierać spacje - należy je zignorować. Terminem jest [a-zA-Z0-9]
operator [^ ()a-zA-Z0-9]
. Możesz założyć, że dane wejściowe są zawsze prawidłowe.
Wyprowadza wszystkie możliwe sposoby pełnego nawiasowania danego wyrażenia, oddzielone znakami nowej linii z opcjonalnym znakiem końca linii.
Czy nie :
- Warunki w nawiasach - tylko w nawiasach wokół operatorów.
- Zmień kolejność warunków.
- Wyprowadzaj dowolne spacje.
Przykładowe wejście / wyjście:
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)
Najmniejszy kod w bajtach wygrywa.
!
pasuje do wyrażenia regularnego, tak robi ↑
, jednak ↑
nie może być częścią wkładu, ponieważ nie jest do druku ASCII.
!
operator? Co↑
?