‹ 返回工坊合集
数学游戏工坊 · 多堆取子 Moore's Nim 篇 | 九章格数学 PhiloMath

摩尔矿场

n 条矿脉,每轮最多开采 k 条、每条取任意颗,谁取走最后一颗矿石谁赢。摩尔教授的二进制密码,等您来破!
当前矿层
★ 1
战胜教授
0
当前连胜
0
场上矿石
—

⛏️ 矿场对决

选矿层 → 🚚运矿小工摆矿 → 您(🧑‍🔧实习矿工)定先手 → 与 👨‍🏫摩尔教授对局。规则:每轮可从至多 k 条矿脉各取任意颗(用 −/+ 调数量,再点「开采」)。
👨‍🏫摩尔教授矿场主 · 数学家,多堆取子高手
⛏️老矿工掌子面军师 · 掌握「位和」口诀
🚚运矿小工摆矿官 · 负责随机分配矿石
🧑‍🔧实习矿工就是您!赢一局记一功
对局状态⚓ 摆矿中
每次上限—
先手实习矿工 🧑‍🔧
轮到谁—
🧑‍🔧 小矿工,选谁先开采?

🔬 探矿工坊 · 我是摆矿官

像运矿小工一样摆一个局:设矿脉条数 n、每条矿石数、每次上限 k,让老矿工告诉您:这个局面对先手是赢是输?必胜第一招取哪几条、各取几颗?
矿脉条数 n = 3 条
每次上限 k = 2 条
各矿脉矿石数(−/+ 调整,0 ~ 31)
先手结局预判
—
摆好后点「老矿工分析」
小贴士:k 越大,先手越强——每次能动的矿脉越多,越容易把局面调成「位和全 0」。但先手必败的局面永远存在,摆矿官的乐趣就是造一个铁桶局。

📖 矿脉旧闻

1910 年的那篇论文、从 Bouton 到 Moore 的一百年,还有老矿工压箱底的「位和」口诀。

👨‍🏫 摩尔教授的矿场

摩尔教授的矿场有 n 条矿脉,矿石有多有少。他最爱的消遣,就是考较来客:每轮您可以挑至多 k 条矿脉各开采任意颗(不许一条都不采),谁取走最后一颗矿石谁赢。教授总是笑眯眯地看着您,因为他的口袋里装着一张写满二进制的小纸条。

这张纸条上的密码,正是 1910 年美国数学家 E. H. Moore 写下的答案——它是 1901 年 Bouton 解出普通 Nim 之后,最自然、也最漂亮的一次推广。

📜 1901:Bouton 与 Nim

哈佛的 Charles L. Bouton 在 1901 年的《数学年刊》上发表了《Nim, a game with a complete mathematical theory》——第一篇把民间取子游戏彻底解出的论文。他的答案只有一句话:把各堆写成二进制,若每个数位上 1 的个数都是偶数(异或为 0),则轮到谁谁输。

Nim 因此成为组合博弈论的开山样本,「P-位置 / N-位置」这套语言就是从它长出来的。

🏛️ 1910:Moore 的推广

九年后的 1910 年,芝加哥学派的领袖 Eliakim Hastings Moore(1862–1932,美国数学会首任主席)在《数学年刊》发表《A generalization of the game called Nim》。他把「每次只能动 1 堆」放宽为「每次可动至多 k 堆」,并给出了完整解答。

答案出人意料地整齐:把「偶数」换成「k+1 的倍数」,Bouton 的判据一字不改地成立。k=1 时它退化成 Bouton 的 Nim。

🔢 老矿工的位和口诀

把每条矿脉的矿石数写成二进制、上下对齐。数一数每一个数位上「1」的个数。如果每一位上 1 的个数都是 k+1 的倍数,那么这个局面是「铁桶局」——轮到谁谁输。反之,先手一定有办法一步把它变成铁桶局。

例:矿脉 3, 5, 6,k = 2(每次至多 2 条,模 3) 3 = 0 1 1 5 = 1 0 1 6 = 1 1 0 位和: 2 2 2 ← 都不是 3 的倍数 → 先手必胜 必胜招: 3,5,6 → 3,3,3(位和变 3 3 3,全是 3 的倍数)

发现了吗?必胜招常常是把几条矿脉拉平。k=2、模 3 的世界里,三条相等的矿脉 (v,v,v) 就是铁桶局——所以 (2,2,2) 先手必败,而 (3,5,6) 只要补成 (3,3,3) 就赢了。

🧩 为什么是「k+1 的倍数」?

因为您要修正位和。设某一位上 1 的个数是 r。若 r 不是 k+1 的倍数,您希望把它调成倍数;而一次最多动 k 条矿脉,每条在该位上要么保留、要么翻转,最多只能改动 k 个 1——所以「k+1」这个模数是被走法上限逼出来的。

反过来,若所有位都已是 k+1 的倍数,您一动(改了 t ≤ k 条脉),最高被改动的那一位上,1 的个数就变成 r′ = r ± t′,而 0 < t′ ≤ k,于是 r′ 必不再是 k+1 的倍数——铁桶阵自动被破坏。一步之差,胜负已分。

🌍 一百年后的回响

Moore 的判据后来被反复推广:每次动至多 k 堆、每堆至多取 m 颗的「Nim_k(m)」,以及「按位和模 k+1」这类判据的适用范围(Jenkyns–Mayberry 1980 指出 Moore 判据对更一般的规则并不总成立,需要额外条件)。

今天它仍是组合博弈论与算法博弈论里的标准例题——也是理解「二进制位独立」这一思想的绝佳入口。

🎉

太棒啦!