‹ 返回工坊合集
独立钻石棋工坊 · Peg Solitaire | 九章格数学 PhiloMath

一颗也不能多留——单子清盘之艺

三十三孔十字棋盘,三十二颗子,中心留空。跳一格、吃一子,直到只剩一颗、且恰在盘心——西方人称它 Solitaire,我们叫它独立钻石棋或孔明棋。它看似漫无章法,其实被数学家解剖得干干净净:康威用「位置类」给出 16 类判决书——开局选错,未走先死;用「pagoda 函数」证明军队永远攻不上第 5 行。本页引擎与 Python 参考实现逐位对拍,位置类、pagoda 值、求解判决全部实时计算,更备有八关启发式进阶教程与「清扫器/置换器」工艺培训,陪您从第一跳走到「天才」。对局盘支持自选空格(33 个空位的补问题全解收录,逐位验证)与天才演示逐局播放,康威之兵新增实战探索。

开局

点击棋子选中,再点高亮落点起跳。连跳请连续点击同一颗子的落点。
「位置类」一栏是康威的判决书:四比特与目标不符时,任何走法都到不了单子居中——这不是猜测,是模 2 不变量的严格定理。pagoda 值同理:清盘需要 ≥ 1。
棋子 选中 可落点 将被吃 孤子

启发式进阶教程 · 八关

每关一个可验证的小目标,过关判定由引擎当场计算。卡片下方备有三层启发式提示——先自己想,撑不住再一层层揭开。过关会点亮星标(存本机)。

康威之兵 · 攻不上的第 5 行

1961 年康威研究了独立钻石棋的「无限军版」:横线以下随便放兵,跳法照旧,目标是把一颗兵送得尽量高。四行以内的防线总能攻破——但第 5 行,无论您有多少兵都攻不上去。他的武器叫 pagoda 函数:每格赋权 φ到目标的曼哈顿距离(φ=(√5−1)/2≈0.618),每一次跳跃总权不增;而整片半平面的总权恰好等于 1,恰恰是目标格上一颗兵自己的权重。零预算,办不成一件一元的事。下面的实验台允许您亲手放兵、实时称重。
横线以下点击格子放兵/撤兵。红色目标在第 5 行——试着把权重堆到 1 吧。
pagoda 权重(对第 5 行目标)
权重 0 / 判决线 1.000
无论怎么放兵(限线以下、数量任意),这个权重永远到不了 1——这就是康威的不可能定理。虚线格是第 5 行。
士兵 第 3 行目标(可达) 第 5 行目标(永不可达)

为什么 · 一枚棋盘里的不变量几何

一、从巴士底狱到「天才」级

独立钻石棋最早见于 1697 年的法国文献,据传是巴士底狱里一位贵族囚徒在铁窗下消磨光阴的发明,随后风靡路易十四的宫廷。英语世界称它 Solitaire,它传入中国后得了个更有志向的名字——孔明棋。规则一句话就能说完:跳一格、吃一子,目标清盘到单子居中。但「天才」评级另有讲究:连跳计一步,1908 年前的玩家以为 23 步是极限,同年都丹尼做到 19 步,1912 年伯荷特(Ernest Bergholt)给出 18 步——1962 年剑桥的比斯利(J. D. Beasley)解析证明 18 步就是地板。1986 年上海举行征解大赛,女工万萍萍找到另一条 18 步路线;此后计算机查明:本质不同的 18 步解恰有两条(计步序共 936 种)。本页「演示天才解」按钮播放的就是引擎逐跳验证过的这条百年名局。

二、位置类:康威的 16 类判决书

《Winning Ways》(1982,第 23 章「Purging Pegs Properly」)里,康威与盖伊给棋盘装上了一把更深的尺子。给每个格子涂上 0/1 标号,要求任何共线连续三格中 1 的个数为偶数——这样的标号函数恰有 2⁴=16 个独立方向(本页引擎解线性方程组当场数给您看,见下图四把「尺子」)。任意走子吃掉两格、补回一格,标号和(模 2)纹丝不动,于是每个局面永远带着一个 4 比特的「户口」,称为位置类。单子居中在某一类;开局若不在同一类,未走一子就已注定失败。更妙的是 English 盘是「零类盘」(null-class):任一局面与它的补局面恰好同类——这正是中心空开局能够清盘的深层原因。对局盘右上角的四比特仪表,就是这台判决器的实时读数。

图 1 | 位置类空间的四把基尺:每把尺下,任何共线连续三格的着色格都恰为偶数个——走子不改,故可判决

三、pagoda 函数:给棋盘称重的艺术

位置类回答「能不能」,pagoda 函数回答「够不够」。选定目标格,按 φ曼哈顿距离给每格标价(φ=(√5−1)/2,黄金分割的倒数,满足 φ²+φ=1)。一次向目标跳,两子换一子,恰好收支相抵(φn+φn−1=φn−2);横跳、远离跳只亏不赚。所以任何局面的总重是清盘难度的「封顶价」:总重小于目标格自身权重的局面,永远清不到那格上。对局盘仪表里的 pagoda 值以此实时结算——清盘需要 ≥ 1,低于 1 的局面可以直接放弃挣扎。

图 2 | 以盘心为目标的价格地图:越靠中心越贵。清盘的总预算必须 ≥ 1

四、启发式清单:高手的六个习惯

①别养孤子:一步也跳不动的子只能靠别人来吃,孤子一多盘面就碎;②保持空洞连通:空洞是跳子的氧气,盘面一旦被割成孤岛,各岛内部无空位即窒息;③成片清扫:像 Bergholt 第 11 步那样一条线连跳六格,效率远高于零敲碎打;④区域轮作:把棋盘分成几个区,一区清干净再转场,避免全盘开花;⑤留意对称:对称局面留下对称余地,终局常常靠中心对称的三连跳收尾;⑥信不变量:走几步就瞄一眼位置类与 pagoda 值,类不符、值不足的挣扎都是白费力气。八关教程正是按这份清单逐关加码——第七关练清扫器,第八关练置换器。

五、清扫器与置换器:康威的解法工艺学

清扫器(sweep):同一颗子连续跳吃,一步吃掉 n 子称 n-清扫(n-sweep),首尾同格者称回环(n-loop)。「天才」评级的计步正是数清扫:31 次跳跃被连跳压缩成多少步。Bergholt 名局包含两个 5-清扫、一个 3-清扫与三个 2-清扫(见下图剖面)——1962 年 Beasley 证明 18 步是地板,靠的手法就是把跳跃尽可能串成清扫。第七关让您在名局中段亲手打出一记 5-清扫。

图 3 | Bergholt 名局 18 步的连跳剖面:柱高 = 该步连跳次数,两根 5 柱与一根 3 柱是名局的骨架

置换器(包裹—催化剂机制):康威在《Winning Ways》第 23 章给出的整套「预制件」工艺——把棋盘划成小区域,用 2~3 跳的短组合把一颗子置换/搬运进指定格、其余全部复原;负责往返的子叫催化剂(catalyst),被整区清空的叫清仓(purge),负责供给棋子的组合叫包裹(package)。常用的 2-包裹、3-清仓、6-清仓与 L-包裹可以像积木一样拼出整局:整盘清空 = 两个 3-清仓 + 三个 6-清仓 + 一个 L-包裹 + 收官一跳。第八关让您亲手完成一次 L-包裹置换——3 步 4 跳,净效果恰是整个 L 区「补」一遍(见下图)。(按:sweep/package/purge/catalyst 为原书术语,「清扫器/置换器」为本页中译;「置换器」概括的是包裹—催化剂的置换机制。)

图 4 | L-包裹置换:L 区(金圈六格)执行前 5 子 → 执行后单子落 e3,区内状态恰好全翻

六、盘外的遗产

这枚小棋盘盘活了一大块数学:位置类是模 2 线性不变量的教科书案例,与十五格滑块的奇偶判决一脉相承;pagoda 函数开创了「给组合博弈称重」的通用手法,在纽结理论里的 Conway 多项式、生命游戏的不可能构造中都能听到它的回声;「康威之兵」的证明甚至被搬进了 Isabelle 定理证明器做形式化。一个贵族囚徒排遣寂寞的玩具,最终成了不变量方法的名片——数学最动人的剧本,不过如此。

编年