0、1、2、および角かっこのみを含む文字列を指定すると、文字列の文法ツリーが出力されます。
Aに2
は2つの引数が必要です-左に1つ、右に1つ
A 1
は単一の引数を必要とします-左または右のいずれかに
A 0
は引数を必要とせず、基本ケースです
角括弧のペアは1つの引数としてカウントされ、角括弧の内容は文字列の残りの部分とは別に評価されます。ネストされたブラケットが可能です
入力文字列は常に完全なツリーであり、文字が落ちることはありません。また、文字列には単一の正しい解しかありません。関数は可換であり、引数の配列は2
受け入れことに。これらの要件に適合しない入力を処理する必要はありません。
出力文法形式はfunction(arguments)
再帰的に形式になります
テストケース
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)))
いいえ、1(2(0,1(0)))または2(1(0)、1(0))の可能性があります
—
ブルー
実際、私はそれが1(2(1(0)、0))だと思っていました;-)
—
ニール
括弧で囲まれた数字が文字列内の位置を示しているため、なぜ
—
feersum
0120210
解析できないのかまだわかりません2[4](2[2](1[1](0[0]), 0[3]), 1[5](0[6]))
。
101
あいまいです。
10201
有効な入力は?