‹ 返回工坊合集
数学游戏工坊 · 台阶取子 Staircase Nim 篇 | 九章格数学 PhiloMath

石阶拾金

石阶上散着铜钱,每轮选一级,把上面若干枚下移一级;落到地面的铜钱就归您。谁把最后一枚铜钱送下石阶,谁赢!
当前石阶
★ 1
战胜守阶翁
0
当前连胜
0
台上铜钱
—

🪜 石阶对决

选石阶 → 🧑‍🔧小沙弥撒币 → 您(🧑‍🎓香客)定先手 → 与 👴守阶翁对局。规则:每轮选一级台阶,把上面任意多枚(至少一枚)铜钱下移一级;从第一级落到地面的铜钱即离场。点台阶选中,再用 −/+ 定枚数,按「下移」。
👴守阶翁山寺管家 · Staircase Nim 行家
🧑‍🏫云游僧军师 · 掌握「奇级异或」口诀
🧑‍🔧小沙弥撒币官 · 负责随机布币
🧑‍🎓香客就是您!赢一局记一功
对局状态🪙 撒币中
台阶数—
先手香客 🧑‍🎓
轮到谁—
🧑‍🎓 香客,选谁先出手?

🔬 石阶工坊 · 我是撒币官

像小沙弥一样摆一个局:设台阶级数、每级的铜钱数,让云游僧告诉您:这个局面对先手是赢是输?必胜第一招该在哪一级下移几枚?
台阶级数 = 3 级
各级铜钱数(−/+ 调整,0 ~ 12 枚;第 1 级在最下)
先手结局预判
—
摆好后点「云游僧分析」
小贴士:偶数级上的铜钱是「死子」——对手把它挪到奇数级,您立刻把同一批再往下推一级,奇数级原封不动。所以胜负只由奇数级铜钱数的异或决定:为 0 则先手必败。

📖 山寺旧闻

从 Sprague 1937 的台阶,到「死子」对消与树上推广。

🪜 石阶拾金的规矩

山寺前的石阶上散落着香客留下的铜钱。两人轮流出手:任选一级台阶,把上面任意多枚(至少一枚)铜钱往下挪一级。从第一级挪到地面的铜钱,就算收进您的口袋,从此离开游戏。

谁把最后一枚铜钱送下石阶,谁就赢。

📜 1937:Sprague 的台阶

这个游戏通常追溯到 R. P. Sprague(1937)——正是「Sprague–Grundy 理论」里的那位 Sprague。CMU 的 Ferguson 讲义《Impartial Combinatorial Games》第 6 节就明确标注着 Staircase Nim (Sprague 1937)。

它也是《Winning Ways》里长盛不衰的经典例题。

🧮 为什么只看奇数级?

关键在一个漂亮的对消:如果对手把铜钱从偶数级挪到奇数级,您立刻把同一批铜钱从那一级再往下挪一级——奇数级上的铜钱数原封不动,等于他白走一步。所以偶数级的铜钱是死子,对胜负毫无影响。

反之,把铜钱从奇数级往下挪,就等于在经典 Nim 里从对应的一堆取子。

于是:局面必败 ⟺ 奇数级铜钱数的异或 = 0。

🪙 死子与「势能」

给每枚铜钱记一个势能:第 i 级的铜钱势能为 i(还要挪几级才落地)。每走一步,势能总和严格减小,所以游戏一定在有限步内结束——这正是「无环」的保证。

奇数级的势能是奇数、偶数级是偶数,奇偶之分正是这个游戏的骨架。

🌳 从台阶到树

把「台阶」换成「树」:每枚硬币放在一个节点上,每步把硬币往父节点挪。这就成了 HackerRank「Move the Coins」(2015) 的题面——判据也顺势推广:算每个节点到根的深度,深度为奇数的节点上的硬币数异或为 0 则必败。

台阶只是退化成一条链的树;而「只看奇数深度」的对消论证,一个字都不用改。

🌍 变体与远亲

把胜负条件倒过来(无法出手者赢)就是反规则版;把「只能下移一级」放宽成「下移任意级」,则是另一族游戏。

Staircase Nim 与经典 Nim(Bouton 1901)、Moore's Nimk(Moore 1910)同属无偏取子游戏家族。

🔢 必败局面一览(异或为 0)

局面 (x₁,x₂,x₃,…) 必败 ⟺ x₁ ⊕ x₃ ⊕ x₅ ⊕ … = 0 3 级:x₁ = x₃ 例 3-1-3 、 2-0-2 、 0-3-0 4 级:x₁ = x₃(2、4 级随意) 例 1-0-1-2 、 0-4-0-0 5 级:x₁ ⊕ x₃ = x₅ 例 4-0-7-0-3 、 2-1-3-0-1 6 级:x₁ ⊕ x₃ = x₅(2、4、6 级随意)

注意:偶数级的数字根本不出现在公式里——它们只是陪衬。这也正是本游戏最迷人的地方:一半的铜钱完全不用管。

🎉

太棒啦!