开局只有一条安全路线

红方第一着是炮隔着对方的炮吃马;两种选择互为镜像,就称之为 1. Cxb10。黑方必须吃子,有两种方式。用车吃回那门炮会被强制击败:红方把棋子一个个送出去,车不得不逐一吃掉,34 步之后红方无子。这一点已被证明,一份 1,864 个局面的证明凭证已由一个只懂规则的校验器重放。用另一门炮轰向红方底线,1...Cxh1,则站得住。

1. Cxb10 之后:黑方必须吃子楚 河 漢 界
1. Cxb10 之后黑方的两种吃法。车在 b10 吃回是已被证明的负着;炮隔着红方自己的 h3 炮打到 h1,是唯一的着法。

接着红方有两种应法,都站得住:安静地用车吃炮,2. Rxh1,交换就此结束;或者继续开炮,2. Cxd10,给黑方设下第二个陷阱,因为只有用将吃炮的 2...Kxd10 站得住。这条连锁强制吃子有 166 个可能的终点,我们从每一个不同的终点各下了一盘。两个存活下来。其余每一条分支都会让走进去的一方输。

2. Rxh1 Rxb10:轮到红方楚 河 漢 界2. Cxd10 Kxd10 3. Rxh1:轮到黑方楚 河 漢 界
连锁中存活下来的两个终点。双方各十四子,棋盘上无子可吃,棋局就此展开。

然后九宫让它成为和棋

要取胜,你必须送掉将、两个士和两个象,而它们谁都离不开家。每一个都只能被走到它跟前的敌方棋子吃掉,而双方都在设法摆脱恰恰是那些棋子。一旦双方都没有了车、马、炮、兵,就再也不可能发生吃子,规则把这判为和棋。

2M 对局第 35 步:死局楚 河 漢 界
引擎每着两百万节点自战的对局,第 35 步。棋盘上再没有任何棋子能吃掉任何东西。

在每一盘引擎对局里,想让棋局停下来的一方都可以把可出击的子力送给对手,对手不得不吃;或者把一辆孤车停在对方任何棋子都永远进不来的线路上。在一百万和五百万节点下,车留在了棋盘上,棋局变成一百步成对交换的兵战,结局相同。这是和棋的证据,而不是证明:我们跑过的搜索都没有从任何一个存活局面找到胜法,而找不到的原因是棋盘本身的性质。

四种修补和两个同族变体,没有一个成为像样的棋

把每一个僵局判给子少的一方能去掉免费的和棋,但没有一个为子数而战的引擎就无法测试。Codrus 是 1844 年的祖先,输掉将即获胜,它经由同样的开局路线成和,而且更快。Losers 保留将的王者身份,有胜负,但方向错了:在我们试过的每一种强度下都是黑方必胜,因为一次将军会暂停吃子义务,而这个先手落在后手一方。放九宫里的棋子出来则已经是另一张棋盘了。

我们发布的是什么,而不是一个对局页面

完整写出三套规则的规则内核、Fairy-Stockfish 的变体配置、开局连锁的全部 166 个终点、每个终点在两种搜索深度下各一盘引擎对局、每一份证明凭证、一个几秒钟内就能对照规则重放它们的校验器,以及放在浏览器里的每一盘棋。如果你能给出第三条存活的开局、任何一份凭证里的防守,或者从上面的局面出发任何一方的胜法,请去那里提一个 issue;文章会如实写明。

阅读完整分析亲自检验这些证明学习象棋