> ==>發信人: PaulLiu.bbs@bbs.cis.nctu.edu.tw (GrandPaul), 信區: programming
> > PaulLiu 真是厲害 ! 不知是否還有其他解 ?
> > 如果由左到右, 有解嗎 ?
> > [3n] := 0 | [3n]*2 + 0 | [3n+1]*2 +1
> > [3n+1] := 1 | [3n+2]*2 + 0 | [3n]*2 +1
> > [3n+2] := [3n+1]*2 + 0 | [3n+2]*2 +1
> 如果是指 right-linear grammar. 那一定是有的.
> 因為這個問題也只不過是個 regular language,
> (還可以考這個東西的 regular expression)
> 也許您要的答案就是直接把 variables 跟 symbols 倒過來,
> 只是 left-linear 比較容易想出來
> 且 3 的倍數在 2 進位下就算順序倒過來還是 3 的倍數
> 像 10 進位, 3 的倍數 10 進位下倒過來也是 3 的倍數
====
變數在左, 0/1 terminal symbol 在右, 每個 bit 從右至左
逐一代入產生. 最大的優點是跟前後文無關.
如果是變數在右, 0/1 bit 在左, 變數在右逐一代入產生時,
已產生的 bit 值因左移而改變, 向右產生時就會溯及左邊的
前文, 這個表示法可能就無法遞迴收斂.
--
◎ Origin: 中央松濤站□bbs.csie.ncu.edu.tw From: 140.115.6.234