Re: [問題] 各棋類對n次局面重覆的處理

看板ChineseChess (象棋)作者 (牧羊人之月)時間14年前 (2010/09/11 11:03), 編輯推噓10(10016)
留言26則, 5人參與, 最新討論串5/9 (看更多)
※ 引述《popfish (Salvador Dali)》之銘言: : 我想藉這討論題目留一個問題, : 是在棋規判定程式撰寫上,判定長捉負的問題, : 假想情況:獻卒送紅車吃,紅車若吃卒則下手被將則敗,只能平一步避開, : 此情況是否算捉? : 若算捉,黑方有兩個卒可輪流捉, : 先左邊的卒捉車,再右邊各來回捉一次,下次再右邊捉兩次,左邊捉一次, : 這樣循環圈過大,容易造成著數內無吃子判和, : 事實上黑屬長捉應判負,因此似乎該主張限制捉子次數? : 還是長捉可改成像西洋棋看盤面有無重複即可判定較佳? 如果真的是用著法的循環來判定,那下面這個局面應該就和棋了吧。                 硨炮┬┬將士┬┬┐  紅 黑  ├┼┼┼士┼┼┼┤  ─ ─  ├┼┼┼車┼┼┼┤  硨 車  ├┼┼┼┼┼┼┼┤  碼 馬  ├┴┴┴┴┴┴┴┤  相 象  ├┬┬┬┬┬┬┬┤  仕 士  ├┼┼┼┼┼┼┼┤  帥 將  ├┼┼┼卒┼┼┼┤  炮 包  ├┼┼卒※┼┼┼┤  兵 卒  └┴┴┴帥┴┴┴┘ (紅方行棋)                 1. 炮八退一 士5退4 2. 炮八進一 士4進5 3. 炮八退二 士5退4 4. 炮八進二 士4進5 5. 炮八退三 士5退4 6. 炮八進三 士4進5 7. 炮八退四 士5退4 8. 炮八進四 士4進5 9. 炮八退五 士5退4 10. 炮八進五 士4進5 11. 炮八退六 士5退4 12. 炮八進六 士4進5 13. 炮八退七 士5退4 14. 炮八進七 士4進5 15. 炮八退八 士5退4 16. 炮八進八 士4進5 17. 炮八退九 士5退4 18. 炮八進九 士4進5 19. 炮八退二 士5退4 20. 炮八進二 士4進5 21. 炮八退四 士5退4 22. 炮八進四 士4進5 23. 炮八退六 下略,到目前為止連一個著法的循環都還沒完成, 估計排列組合後將個幾百步不成問題。 但是車炮在同一個位置交替將,已經連續將十幾次了, 雖然著法沒有循環,但這仍然是長將。 焦點應放在捉子的棋子,被捉的棋子(長將也是長捉的一種,長捉將)之間的關係。 原PO的問題我想也可以用這個模型解釋。 所以應不至於有循環著數過多的問題。 再舉一個接近原PO意思的局面: ┌┬┬┬將┬┬┬車  紅 黑  ├┼硨┼※┼┼┼┤  ─ ─  ├┼硨┼┼┼┼┼┤  硨 車  ├┼┼┼┼┼┼┼┤  碼 馬  ├┴┴┴┴┴┴┴┤  相 象  ├┬┬┬┬┬┬┬┤  仕 士  ├┼┼┼┼┼┼┼┤  帥 將  ├┼┼┼┼┼┼┼┤  炮 包  ├┼┼┼車┼卒┼┤  兵 卒  └┴┴┴┴帥┴┴┘ (紅方行棋)                 這局面紅任一個車只要在同一位置將第四次就輸了, 所以是不可能被紅方長將湊步成和棋的。 兩子共長捉的著數比一個子單獨長捉的著數多是肯定的, 但不至於影響勝負結果。 -- 奴僕們!互相殘殺吧! 最後存活下來的人, 我會疼愛他。 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 114.44.22.11

09/11 11:06, , 1F
嗯 這部位我懂 西洋棋是看「棋位」;象棋看「棋義」
09/11 11:06, 1F

09/11 11:06, , 2F
只要符合定義即可...我有找到一點東西會再整理一下..
09/11 11:06, 2F
※ 編輯: lunalina 來自: 114.44.22.11 (09/11 11:37)

09/11 11:40, , 3F
西洋棋在此的定義和象棋不同。西洋棋只要重複三次
09/11 11:40, 3F

09/11 11:42, , 4F
相同局面,就算第三次與前兩次中間差了幾十回合,
09/11 11:42, 4F

09/11 11:43, , 5F
只要一出現都可以提出和棋。
09/11 11:43, 5F

09/11 16:17, , 6F
對這個例子舉的好,但第一例不就要告訴程式判斷長捉數
09/11 16:17, 6F

09/11 16:19, , 7F
一般人在下是可以由裁判協調,但是如果不是實體的呢?
09/11 16:19, 7F

09/11 22:18, , 8F
不太明白原PO要問的問題。簡單來說,第一例車和炮
09/11 22:18, 8F

09/11 22:19, , 9F
都在同一個位置將超過四次,便是長將。
09/11 22:19, 9F

09/11 22:20, , 10F
至於如何把棋規的精神轉換成程式可以懂的語言,
09/11 22:20, 10F

09/11 22:20, , 11F
便是寫程式者的工作了。
09/11 22:20, 11F

09/11 22:23, , 12F
唉這就是程式撰寫和裁判的gap,程式會問幾步連將判負
09/11 22:23, 12F

09/11 22:24, , 13F
或者要用循環盤面還是循環著法判?清楚告訴程式就好
09/11 22:24, 13F

09/11 22:25, , 14F
但這樣討論下來,棋規是看循環,l大例子程式似沒法判?
09/11 22:25, 14F

09/11 22:26, , 15F
這便是寫程式者的問題。因為是否連將不是看幾步,
09/11 22:26, 15F

09/11 22:27, , 16F
而是看同一個位置將幾次。如果寫的程式問了不該問的
09/11 22:27, 16F

09/11 22:27, , 17F
問題,要改一下。
09/11 22:27, 17F

09/11 22:29, , 18F
應該可以讓程式用「局面循環」來判。上面兩例都可以
09/11 22:29, 18F

09/11 22:30, , 19F
棋規文字寫的是著法循環,但精神其實接近局面循環
09/11 22:30, 19F

09/12 18:15, , 20F
"局面重覆"沒有意義 且只是解殺或脫時間 
09/12 18:15, 20F

09/12 18:15, , 21F
規定判輸合情合理 第一例2,4,6手就重複三次判負了?
09/12 18:15, 21F

09/12 18:18, , 22F
先想想局面重複的意思吧..在下棋中是不該有的
09/12 18:18, 22F

09/12 18:18, , 23F
所以利用此偷雞得利的理應判負
09/12 18:18, 23F

09/12 18:22, , 24F
cyc的程式好像就是這樣判的 如例一還要測試看看
09/12 18:22, 24F

09/13 07:47, , 25F
我只會健康教育
09/13 07:47, 25F

09/13 09:24, , 26F
樓上,哪一種健康教育?
09/13 09:24, 26F
文章代碼(AID): #1CYl68eD (ChineseChess)
討論串 (同標題文章)
文章代碼(AID): #1CYl68eD (ChineseChess)