Dada uma sequência contendo apenas zeros 1, 2 e colchetes, produza a árvore gramatical da sequência.
A 2
requer 2 argumentos - um para a esquerda e outro para a direita
A 1
requer um único argumento - à esquerda ou à direita
A 0
não requer argumentos e é o caso base
Um par de colchetes conta como um argumento e o conteúdo dos colchetes é avaliado separadamente do restante da string. São possíveis colchetes aninhados
Uma sequência de entrada sempre será uma árvore completa sem caracteres caindo. A cadeia também terá apenas uma única solução correta. Observe que as funções são comutativas e qualquer disposição de argumentos 2
será aceitável. Você não precisará manipular entradas que não estejam em conformidade com esses requisitos.
O formato da gramática de saída será no formato function(arguments)
recursivo
Casos de teste
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
uma entrada válida?0120210
que também não pode ser analisado, pois2[4](2[2](1[1](0[0]), 0[3]), 1[5](0[6]))
os números entre colchetes indicam a posição na string.101
também é ambíguo.Respostas:
Python 3.6 (pré-lançamento), 199
Economizou 6 bytes graças a Morgan Thrapp
Explicação e versão não destruída:
fonte