Étant donné une chaîne contenant uniquement des 0, des 1, des 2 et des crochets, affichez l'arborescence grammaticale de la chaîne.
A 2
nécessite 2 arguments - un à gauche et un à droite
A 1
requiert un seul argument - à gauche ou à droite
A 0
ne nécessite aucun argument et est le cas de base
Une paire de crochets compte comme un argument et le contenu des crochets est évalué séparément du reste de la chaîne. Les crochets imbriqués sont possibles
Une chaîne d'entrée sera toujours une arborescence complète sans aucun caractère tombant. La chaîne n'aura également qu'une seule solution correcte. Notez que les fonctions sont commutatives et tout arrangement d'arguments pour 2
sera acceptable. Vous n'aurez pas à gérer des entrées non conformes à ces exigences.
Le format de grammaire de sortie sera function(arguments)
récursivement sous la forme
Cas de test
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
entrée est-elle valide?0120210
ne peut pas également être analysé comme2[4](2[2](1[1](0[0]), 0[3]), 1[5](0[6]))
où les chiffres entre crochets indiquent la position dans la chaîne.101
est également ambigu.Réponses:
Python 3.6 (pré-version), 199
6 octets enregistrés grâce à Morgan Thrapp
Explication et version non golfée:
la source