作者lunalina (牧羊人之月)
看板ChineseChess
标题Re: [问题] 各棋类对n次局面重覆的处理
时间Sat Sep 11 11:03:33 2010
※ 引述《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
1F:推 puzzlez :嗯 这部位我懂 西洋棋是看「棋位」;象棋看「棋义」 09/11 11:06
2F:→ puzzlez :只要符合定义即可...我有找到一点东西会再整理一下.. 09/11 11:06
※ 编辑: lunalina 来自: 114.44.22.11 (09/11 11:37)
3F:→ lunalina :西洋棋在此的定义和象棋不同。西洋棋只要重复三次 09/11 11:40
4F:→ lunalina :相同局面,就算第三次与前两次中间差了几十回合, 09/11 11:42
5F:→ lunalina :只要一出现都可以提出和棋。 09/11 11:43
6F:推 popfish :对这个例子举的好,但第一例不就要告诉程式判断长捉数 09/11 16:17
7F:推 popfish :一般人在下是可以由裁判协调,但是如果不是实体的呢? 09/11 16:19
8F:→ lunalina :不太明白原PO要问的问题。简单来说,第一例车和炮 09/11 22:18
9F:→ lunalina :都在同一个位置将超过四次,便是长将。 09/11 22:19
10F:→ lunalina :至於如何把棋规的精神转换成程式可以懂的语言, 09/11 22:20
11F:→ lunalina :便是写程式者的工作了。 09/11 22:20
12F:推 popfish :唉这就是程式撰写和裁判的gap,程式会问几步连将判负 09/11 22:23
13F:推 popfish :或者要用循环盘面还是循环着法判?清楚告诉程式就好 09/11 22:24
14F:推 popfish :但这样讨论下来,棋规是看循环,l大例子程式似没法判? 09/11 22:25
15F:→ lunalina :这便是写程式者的问题。因为是否连将不是看几步, 09/11 22:26
16F:→ lunalina :而是看同一个位置将几次。如果写的程式问了不该问的 09/11 22:27
17F:→ lunalina :问题,要改一下。 09/11 22:27
18F:→ lunalina :应该可以让程式用「局面循环」来判。上面两例都可以 09/11 22:29
19F:→ lunalina :棋规文字写的是着法循环,但精神其实接近局面循环 09/11 22:30
20F:推 aaabboy :"局面重覆"没有意义 且只是解杀或脱时间 09/12 18:15
21F:→ aaabboy :规定判输合情合理 第一例2,4,6手就重复三次判负了? 09/12 18:15
22F:推 aaabboy :先想想局面重复的意思吧..在下棋中是不该有的 09/12 18:18
23F:→ aaabboy :所以利用此偷鸡得利的理应判负 09/12 18:18
24F:推 aaabboy :cyc的程式好像就是这样判的 如例一还要测试看看 09/12 18:22
25F:推 McuDrCat :我只会健康教育 09/13 07:47
26F:→ lunalina :楼上,哪一种健康教育? 09/13 09:24