纪录
下面每一类都是攻方对士象全:将带双士双象,即标准的全套防守。杀着步数以回合计,而非半回合,双方都走完美着法:胜方以局面允许的最快速度成杀,负方尽可能久地坚持。
单马、单炮、单兵对士象全根本赢不了。这是老知识,残局库里也都是和棋。
每一条着法都是一个研究中的一章。各章没有变着,也没有遗漏:负方任何别的走法,所到局面离杀更近;胜方任何别的走法,不是失去胜势就是更慢。这正是它成为最长着法的原因。
七局中有五局不是以将军结束
在国际象棋里,逼和算和棋,所以每一条最长杀局都以将死告终。象棋的判法正相反:无着可走的一方判负。这种局面叫困毙,发生时负方通常根本没有被将军。在这几条着法的结尾,防守方的士象都已丢光,将独自留在九宫里,却没有一步合法着法可走。
这七项纪录中有五项是这种结局,包括最长的两项。下面是第二长的一项,双炮对士象全,从终局前五回合开始:五十二回合的周旋,最后一步是一着不带将的闲着,让将无处可走。
残局库不知道的规则
残局库只知道合法局面和着法,别的一概不知。它不知道重复局面的规则,也不知道自然限着(60回合无吃子即判和的规则),所以表中的一个醒目数字,可能是一条实战中永远走不完的着法。国际象棋那个著名的纪录就是这样:七子残局库里的549步杀,远在成杀之前就会被50步规则判和。
这七局不是。我们用这两条规则逐一重放了每条着法:没有一局出现局面重复,最长的无吃子段落是27回合,出现在双炮和车仕相全两局中,远在60回合限着之内。
与公布的表对照
象棋云库的表给出每一类中红先的最深局面;我们的表取最深局面,不论轮到哪一方走。在两者问的是同一个问题时,结果完全一致:双兵43个半回合,炮兵131,马兵129,炮马71。
不过,最大值不一定就是纪录。炮兵的131个半回合是整个士象全组里最深的数字,但拿象棋云库自己的 API 去查这个局面,返回的取胜着法只有一步,炮打象,其余着法都是和棋,吃子之后的局面得分是130。这其实是一步吃子加上一盘对缺一象的防守的130个半回合杀局,所以炮兵不在上面的表里。
还缺什么
这里的每一类,都有一方只剩将和士象。更有意思的情况是两个进攻子对一个同样保有子力的防守,比如车马对车士象全及其相近的组合,双方都没有非吃子不可的义务。60回合限着真正会起作用的正是这里,一项纪录也可能像国际象棋那样,实战中根本走不完。它也有大约90亿个索引,需要一台内存远大于笔记本电脑的机器。