Heute besteht Ihre Herausforderung darin, alle möglichen vollständigen Klammern eines Ausdrucks zu erstellen.
Ihre Eingabe ist eine einzelne Zeile druckbaren ASCII, die einen oder mehrere durch Operatoren getrennte Begriffe enthält. Die Eingabe kann auch Leerzeichen enthalten - Sie müssen diese ignorieren. Ein Begriff ist [a-zA-Z0-9], ein Operator ist [^ ()a-zA-Z0-9]. Sie können davon ausgehen, dass die Eingabe immer gültig ist.
Geben Sie alle möglichen Möglichkeiten aus, um den angegebenen Ausdruck vollständig in Klammern zu setzen, getrennt durch Zeilenumbrüche mit einem optionalen nachgestellten Zeilenumbruch.
Haben nicht :
- Begriffe in Klammern - nur in Klammern um Operatoren.
- Ordnen Sie die Bedingungen neu.
- Geben Sie Leerzeichen aus.
Beispiel Eingabe / Ausgabe:
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)
Der kleinste Code in Bytes gewinnt.
!passt zur Regex, ↑kann aber ↑auch nicht Teil der Eingabe sein, da es kein druckbares ASCII ist.
!ein Betreiber? Was ist mit↑?