Dada una cadena que contiene solo 0's 1's, 2's y corchetes, genera el árbol gramatical de la cadena.
A 2
requiere 2 argumentos: uno a la izquierda y otro a la derecha
A 1
requiere un solo argumento, ya sea a la izquierda o a la derecha
A 0
no requiere ningún argumento y es el caso base
Un par de corchetes cuenta como un argumento y el contenido de los corchetes se evalúa por separado del resto de la cadena. Los soportes anidados son posibles
Una cadena de entrada siempre será un árbol completo sin caracteres que se caigan. La cadena también solo tendrá una única solución correcta. Tenga en cuenta que las funciones son conmutativas y cualquier arreglo de argumentos 2
será aceptable. No tendrá que manejar entradas que no cumplan con estos requisitos.
El formato de la gramática de salida será en forma function(arguments)
recursiva
Casos de prueba
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
una entrada válida?0120210
no se puede analizar también como2[4](2[2](1[1](0[0]), 0[3]), 1[5](0[6]))
donde los números entre paréntesis indican la posición en la cadena.101
También es ambiguo.Respuestas:
Python 3.6 (prelanzamiento), 199
Guardado 6 bytes gracias a Morgan Thrapp
Explicación y versión sin golf:
fuente