精華區beta Programming 關於我們 聯絡資訊
> ==>發信人: 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