纪录

下面每一类都是攻方对士象全:将带双士双象,即标准的全套防守。杀着步数以回合计,而非半回合,双方都走完美着法:胜方以局面允许的最快速度成杀,负方尽可能久地坚持。

攻方最长胜局结局
马兵65回合成杀困毙
双炮52回合成杀困毙
车仕相全43回合成杀将死
炮马36回合成杀困毙
单车32回合成杀将死
双马31回合成杀困毙
双兵22回合成杀困毙

单马、单炮、单兵对士象全根本赢不了。这是老知识,残局库里也都是和棋。

每一条着法都是一个研究中的一章。各章没有变着,也没有遗漏:负方任何别的走法,所到局面离杀更近;胜方任何别的走法,不是失去胜势就是更慢。这正是它成为最长着法的原因。

七局中最长的一局,可逐着演示。另外六局是同一研究的后续各章。

七局中有五局不是以将军结束

在国际象棋里,逼和算和棋,所以每一条最长杀局都以将死告终。象棋的判法正相反:无着可走的一方判负。这种局面叫困毙,发生时负方通常根本没有被将军。在这几条着法的结尾,防守方的士象都已丢光,将独自留在九宫里,却没有一步合法着法可走。

这七项纪录中有五项是这种结局,包括最长的两项。下面是第二长的一项,双炮对士象全,从终局前五回合开始:五十二回合的周旋,最后一步是一着不带将的闲着,让将无处可走。

离终局还有五回合。e1的炮吃掉e8上最后一个象,另一只炮从f2经b2绕到b9,e8的炮再进到e9,贴在将的下方,黑将走到d10。随后是不带将的闲着e9-c9:b9的炮隔着它打到d9,而e线已经打开,将若走e10就会与红帅照面。黑方没有被将军,却无着可走。

残局库不知道的规则

残局库只知道合法局面和着法,别的一概不知。它不知道重复局面的规则,也不知道自然限着(60回合无吃子即判和的规则),所以表中的一个醒目数字,可能是一条实战中永远走不完的着法。国际象棋那个著名的纪录就是这样:七子残局库里的549步杀,远在成杀之前就会被50步规则判和。

这七局不是。我们用这两条规则逐一重放了每条着法:没有一局出现局面重复,最长的无吃子段落是27回合,出现在双炮和车仕相全两局中,远在60回合限着之内。

与公布的表对照

象棋云库的表给出每一类中红先的最深局面;我们的表取最深局面,不论轮到哪一方走。在两者问的是同一个问题时,结果完全一致:双兵43个半回合,炮兵131,马兵129,炮马71。

不过,最大值不一定就是纪录。炮兵的131个半回合是整个士象全组里最深的数字,但拿象棋云库自己的 API 去查这个局面,返回的取胜着法只有一步,炮打象,其余着法都是和棋,吃子之后的局面得分是130。这其实是一步吃子加上一盘对缺一象的防守的130个半回合杀局,所以炮兵不在上面的表里。

还缺什么

这里的每一类,都有一方只剩将和士象。更有意思的情况是两个进攻子对一个同样保有子力的防守,比如车马对车士象全及其相近的组合,双方都没有非吃子不可的义务。60回合限着真正会起作用的正是这里,一项纪录也可能像国际象棋那样,实战中根本走不完。它也有大约90亿个索引,需要一台内存远大于笔记本电脑的机器。

逐着演示全部七局基本残局