Diberikan string yang hanya berisi 0's 1's, 2's dan kurung, output pohon tata bahasa string.
A 2
membutuhkan 2 argumen - satu ke kiri dan satu ke kanan
A 1
membutuhkan argumen tunggal - ke kiri atau kanan
A 0
tidak memerlukan argumen apa pun dan merupakan kasus dasar
Sepasang tanda kurung dihitung sebagai satu argumen dan isi tanda kurung dievaluasi secara terpisah dari sisa string. Kurung bersarang dimungkinkan
String input akan selalu menjadi pohon lengkap tanpa karakter yang jatuh. String juga hanya akan memiliki satu solusi yang benar. Perhatikan bahwa fungsinya komutatif dan pengaturan argumen apa pun untuk2
akan dapat diterima. Anda tidak harus menangani input yang tidak sesuai dengan persyaratan ini.
Format tata bahasa output akan dalam bentuk function(arguments)
secara rekursif
Uji kasus
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
input yang valid?0120210
juga tidak dapat diuraikan seperti di2[4](2[2](1[1](0[0]), 0[3]), 1[5](0[6]))
mana angka tanda kurung menunjukkan posisi dalam string.101
juga ambigu.Jawaban:
Python 3.6 (pra-rilis), 199
Disimpan 6 byte berkat Morgan Thrapp
Penjelasan & versi tidak bercakap:
sumber