Bei einer Zeichenfolge, die nur Nullen, Einsen, Zweisen und Klammern enthält, wird der Grammatikbaum der Zeichenfolge ausgegeben.
A 2
erfordert zwei Argumente - eines nach links und eines nach rechts
A 1
erfordert ein einzelnes Argument - entweder nach links oder nach rechts
A 0
benötigt keine Argumente und ist der Basisfall
Ein Klammerpaar zählt als ein Argument, und der Inhalt der Klammern wird getrennt vom Rest der Zeichenfolge ausgewertet. Verschachtelte Klammern sind möglich
Eine Eingabezeichenfolge ist immer ein vollständiger Baum, aus dem keine Zeichen herausfallen. Die Zeichenfolge hat auch nur eine einzige richtige Lösung. Beachten Sie, dass die Funktionen kommutativ sind und jede Anordnung von Argumenten 2
zulässig ist. Sie müssen keine Eingaben verarbeiten, die diesen Anforderungen nicht entsprechen.
Das Ausgabeformat für die Grammatik wird function(arguments)
rekursiv angegeben
Testfälle
0 --> 0
01 --> 1(0)
020 --> 2(0,0)
101 --> 1(1(0))
0120 --> 2(1(0),0)
0120210 --> 2(1(0),2(0,1(0)))
01210 --> 2(1(0),1(0))
(020)210 --> 2(2(0,0),1(0))
((020)20)1 --> 1(2(0,2(0,0)))
10201
gültige Eingabe?0120210
nicht auch analysiert werden kann,2[4](2[2](1[1](0[0]), 0[3]), 1[5](0[6]))
wo die Zahlen in Klammern die Position in der Zeichenfolge angeben.101
ist auch mehrdeutig.Antworten:
Python 3.6 (Vorabversion), 199
6 Bytes gespart dank Morgan Thrapp
Erklärung & ungolfed version:
quelle