Simon Tatham 怀念 2048 又嫌它太长,于是想要一局能在编译间隙里挤完的短版本——答案是把 4×4 换到 3×3,但他不靠跟朋友反复试玩来定目标数字,而是写程序穷举:3×3 的棋盘状态空间小到可以遍历所有可能局面,算出完美玩家能做出多大的方块再据此挑目标。分析可行的原因有二:想合成 2^k,每格只可能是空或 2…2^k 之一,总共 (k+1)^9 种局面,即使目标是 2048=2^11 也就 12^9 ≈ 2^32 个状态,现代计算机数秒到数分钟即可算完;且 2048 是单调的——每次移动所有方块之和严格上升,任何局面都不可能回到从前,于是既无无限循环、也无需解联立方程去给局面定值。文章顺着「完美玩家能达成什么」「何时不可能」「极端难度」「舍入误差」一路分析到玩法启示。他还罕见地为这篇博客启用了 JavaScript,只是为了内联可玩的 3×3 棋盘与一局完美回放(他说没有不靠 JS 的理智办法展示 500 张画面)。