Sudoku Explained

一万道题到底需要什么

这份数据统计的是题目本身要求什么,不是解题者自称用了什么。评级器与游戏同源,种子固定,原始数据在文末。

先说结论

我们生成了一万道题,每一道都用游戏与练习纸背后的同一台评级引擎评过。有四件事和大多数教程给人的印象相反。

难度档描述的是技巧,不是难度。 游戏在「简单」给你的每一道题,都只需要唯一数就能推完——600 道里 600 道如此。「专家」的每一道都需要链或剑鱼,同样是 600 比 600。五档不是一条平滑的坡,是五个桶,一道题只会落进其中一个。

X-Wing 比教程说的更少见。 挖到 26 个提示的盘里,它出现在 3.5%。摩天楼是 10.1%,接近三倍,而在几乎所有教学顺序里,摩天楼都排在 X-Wing 后面。困难档的 600 道题里,只有 9 道以 X-Wing 为上限,其余 591 道需要更难的招。

有三招一次都没出现。 隐性三数组、XYZ-Wing、水母,在 5000 道题里出现的次数都是零。它们是真的,也教得会,但你在实战里不会偶然撞上它们。

提示数是个很弱的指标。 同样 26 个提示,58% 的题只需唯一数,另有 11% 十六种技巧全都推不完。提示数一样,活儿完全不一样。

这批数据怎么来的

评级器就是游戏里给每道盘面打分的同一份代码。它由便宜到贵依次尝试技巧——先唯一数,再数对与区块摒除,再 X-Wing,再摩天楼那一族,最后是链——然后记录解题过程中真正用到的最高一级。十六种技巧全部用完仍推不完的盘,标记为「无可推之技」,照样计数,不剔除。

三次采样,共用同一个种子,所以整个流程可以重跑:

「这一档实际产出了什么」,不是「它声称会产出什么」。

让某个技巧出现而做过任何筛选。

每个难度档实际给了你什么

档位给定提示平均步数这道题实际需要什么
简单421.0唯一数 600/600
中等305.5数对、区块摒除 592/600;唯一数 8/600
困难298.1摩天楼一级 591/600;X-Wing 9/600
专家2612.8链、剑鱼 600/600
大师24.67.9无可推之技 600/600

简单和中等两行在意料之中。困难那一行值得多看一遍。

一道题被评为困难,是因为它最高只用到 X-Wing。但 X-Wing 本身就稀缺:困难档产出的600 道题里,只有 9 道以 X-Wing 封顶。另外 591 道需要摩天楼、XY-Wing 或唯一矩形——这些在多数教程里属于更靠后的章节。

这不是档位设错了,是供给就这样。一道「唯一数、数对、X-Wing 就够,再难不会」的盘真的不多;当生成器挖到必须用一个有名有姓的招式的深度时,它撞见的通常是比较常见的那个。档位两者都接受,常见的那个靠频率赢。

落到盘面上就是:如果你能认出 X-Wing,却在摩天楼前面卡住,困难档会让你觉得忽难忽易。这不是你漏学了什么,这就是分布本身。

大师那一行是另一回事。那 600 道题每一道都击败了全部十六种技巧。这里的「大师」意思是评级器推不下去——题目需要猜、需要自己手工搭链,或者需要这套引擎还没实现的技巧。它是一个真实的类别,但它不是「专家的下一级」,是另一种墙。

每一招到底多常见

5000 道题,全部挖到 26 个提示,不做其他筛选。一招只要在解题路径里出现过就算,不要求它是最难的那一步。

技巧引擎等级出现的盘数占比
隐性唯一数1478495.7%
唯一候选数1424885%
显性数对2151330.3%
区块摒除2115323.1%
隐性数对270214%
行列摒除251310.3%
摩天楼450610.1%
XY-Wing44128.2%
XY 链53436.9%
W-Wing52765.5%
X-Wing31763.5%
唯一矩形41162.3%
显性三数组21112.2%
Swordfish5160.3%
隐性三数组200
XYZ-Wing400
Jellyfish500

先看表尾。隐性三数组、XYZ-Wing、水母:零、零、零。 不是少,是没有。一份教程如果花一整章讲它们却不说这件事,它描述的是这个提示数下基本不会出现的题。

剑鱼好一点,0.3%——5000 道里 16 道。站上有一张剑鱼练习纸,做它时用的题库比其他五张大得多,因为供给真的就这么薄。

再看顺序。摩天楼 10.1%,大约是 X-Wing(3.5%)的三倍;XY-Wing 8.2%,也是两倍多。几乎所有教学顺序都把 X-Wing 排在第一个,因为它讲起来最简单——一个数字、四个格子、一个矩形。讲起来简单和遇得上是两件事,而通行顺序优化的是前者。

这不是说该改教摩天楼。X-Wing 仍然是单数字模式最合适的入门,它只是没有自己的名气所暗示的那么常用。

提示越少就越难吗

不是。下面这张表就是理由。每一行是独立的一批,生成方式完全相同,只差挖到多深。

给定提示只需唯一数需要摩天楼以上平均步数
2243.6%39.6%6.0
2442.8%39.2%5.7
2658.8%26.8%4.7
2872.8%20%3.4
3083.6%11.2%2.6
3293.2%4.8%1.7
3496.8%2.8%1.5
3698.4%1.6%1.3

趋势是有的——22 个提示的盘大约 40% 需要高级技巧,36 个提示的盘约 2%。但这个趋势噪声大到没法当难度尺用。26 个提示时,最常见的结果仍然是「只要唯一数」。两道给定数相同的题,实际等级可以差四级。

原因是结构性的。挖洞是拿走格子,它不决定剩下的盘需要什么。一道题需不需要摩天楼,取决于恰好留下了哪些格子,而不取决于留了几个。提示数描述的是洞的大小,不是活的形状。

这也是游戏要「生成完再评级」、而不是直接相信档位的原因。档位只负责挑目标,评级器负责说最后出来了什么。

这份数据怎么用

选难度时:把档位当成「我要练哪一招」,不是「这局要多久」。简单是唯一数练习,中等是数对与区块摒除,困难是摩天楼那一族加偶尔的 X-Wing,专家是链,大师是引擎推不完的题。

学技巧时:表尾那两行——剑鱼和三个零——在你稳定认出摩天楼和 XY-Wing 之前不值得花时间。不是因为难,是因为遇不上。把常见的练熟,少见的自己会来找你。

看别人的技巧排序时:分辨那个顺序是按「概念上好不好讲」还是按「实战里多常见」。绝大多数是前者,而且通常也说得明白。只要别把「第三个讲的」当成「第三常见的」。

这份数据证明不了什么

样本是生成的,不是从出版物里收集的。报纸的「困难」不等于本站的「困难」,这份数据也说明不了某一本书或某个 App 的技巧分布。这些数字描述的是这个生成器在这些挖洞深度上产出了什么。

5000 道那个样本里,约 11% 是引擎没推完的盘。对这些盘,解题路径停在评级器卡住的地方,它后面本会需要的技巧没有被计入。这会让表尾那些稀有项被轻微低估——也就是说剑鱼的真实频率只会比 0.3% 高一点,不会更低。

单次运行的估计带抽样误差。5000 道样本下,一个 3.5% 的技巧误差约为 ±0.5 个百分点。三个零是唯一抽样误差解释不了的结果:三招、5000 道、零次。

原始数据

全部在一个文件里,包含上表用到的每一项分样本统计。

想自己复核就跑 node tools/gen-stats.js,种子是固定的,跑出来是同一组数。