开局只有一条安全路线
红方第一着是炮隔着对方的炮吃马;两种选择互为镜像,就称之为 1. Cxb10。黑方必须吃子,有两种方式。用车吃回那门炮会被强制击败:红方把棋子一个个送出去,车不得不逐一吃掉,34 步之后红方无子。这一点已被证明,一份 1,864 个局面的证明凭证已由一个只懂规则的校验器重放。用另一门炮轰向红方底线,1...Cxh1,则站得住。
接着红方有两种应法,都站得住:安静地用车吃炮,2. Rxh1,交换就此结束;或者继续开炮,2. Cxd10,给黑方设下第二个陷阱,因为只有用将吃炮的 2...Kxd10 站得住。这条连锁强制吃子有 166 个可能的终点,我们从每一个不同的终点各下了一盘。两个存活下来。其余每一条分支都会让走进去的一方输。
然后九宫让它成为和棋
要取胜,你必须送掉将、两个士和两个象,而它们谁都离不开家。每一个都只能被走到它跟前的敌方棋子吃掉,而双方都在设法摆脱恰恰是那些棋子。一旦双方都没有了车、马、炮、兵,就再也不可能发生吃子,规则把这判为和棋。
在每一盘引擎对局里,想让棋局停下来的一方都可以把可出击的子力送给对手,对手不得不吃;或者把一辆孤车停在对方任何棋子都永远进不来的线路上。在一百万和五百万节点下,车留在了棋盘上,棋局变成一百步成对交换的兵战,结局相同。这是和棋的证据,而不是证明:我们跑过的搜索都没有从任何一个存活局面找到胜法,而找不到的原因是棋盘本身的性质。
四种修补和两个同族变体,没有一个成为像样的棋
把每一个僵局判给子少的一方能去掉免费的和棋,但没有一个为子数而战的引擎就无法测试。Codrus 是 1844 年的祖先,输掉将即获胜,它经由同样的开局路线成和,而且更快。Losers 保留将的王者身份,有胜负,但方向错了:在我们试过的每一种强度下都是黑方必胜,因为一次将军会暂停吃子义务,而这个先手落在后手一方。放九宫里的棋子出来则已经是另一张棋盘了。
我们发布的是什么,而不是一个对局页面
完整写出三套规则的规则内核、Fairy-Stockfish 的变体配置、开局连锁的全部 166 个终点、每个终点在两种搜索深度下各一盘引擎对局、每一份证明凭证、一个几秒钟内就能对照规则重放它们的校验器,以及放在浏览器里的每一盘棋。如果你能给出第三条存活的开局、任何一份凭证里的防守,或者从上面的局面出发任何一方的胜法,请去那里提一个 issue;文章会如实写明。