紀錄

下面每一類都是攻方對士象全:將帶雙士雙象,即標準的全套防守。殺著步數以回合計,而非半回合,雙方都走完美著法:勝方以局面允許的最快速度成殺,負方盡可能久地堅持。

攻方最長勝局結局
馬兵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億個索引,需要一台記憶體遠大於筆記型電腦的機器。

逐著演示全部七局基本殘局