准备好开始了吗?

开始玩数独!

数独解法:一步一步教你解题

阅读约 1 分钟

解数独只需重复一个循环:扫描只有一个位置可放的数字,把它填上,再扫描。 当扫描一无所获时,把每个空格的候选数都写出来,找数对,再找宫内指向数对。这份指南写给懂数独规则、想要一个总能告诉自己下一步做什么的方法的新手。下面先给出六步方法,再逐步解一道真实的简单题。

六步方法

  1. 扫描宫,找隐性唯一数。 选最满的宫,列出它缺的数字,对每个数字找出它还能放的格。只剩一格,数字就填在那里。
  2. 扫描格,找显性唯一数。 如果一个格所在的行、列和宫里已经有 8 个不同的数字,它就取第 9 个。
  3. 每填一个数就重新扫描。 一个新数字会在另外 20 个格里挡住这个数字,所以下一个唯一数通常就在它旁边。
  4. 卡住了?写笔记。 把每个空格里所有合法的数字,作为小候选数记下来。
  5. 找数对。 同一区域里的两个格,候选数是相同的两个,没有别的,这样你就可以把这两个数字从该区域的其余格中划掉。
  6. 找宫内指向数对。 在宫内被限制在一条线上的数字,可以从这条线的其余部分划掉。任何排除都可能产生新的唯一数,所以回到第 1 步。

清单里没有猜测。一道出得好的题,每个格都能被证明。

实例:题库里的一道简单题

这是我们自己题库里的一道经典 9x9 简单题。我们用来给题目评级的解题器 Sudoku Explainer 给它的评分是 1.2(简单的范围是 1.0 到 1.9)。它有 36 个已知数,引擎用 45 步解出。每一步都是隐性唯一数。行从上到下命名为 A 到 J(没有 I),列从左到右为 1 到 9,所以 B2 是第二行、第二列。

  1. 一道有 36 个已知数的简单题目。前 4 个唯一数都落在 B 行。

    依次是:B2 填 9,B4 填 6,B9 填 5,然后 B3 填 8。

一道有 36 个已知数的简单题目。前 4 个唯一数都落在 B 行。 依次是:B2 填 9,B4 填 6,B9 填 5,然后 B3 填 8。

盘面标亮了行 B,并按引擎采用的顺序给前四次填数编了号:

  1. B2 = 9。 宫 1(左上)缺 4、7、8 和 9。9 不能放在 C1 或 C3,因为行 C 的 C4 已经有 9。它也不能放在 B3,因为第 3 列的 J3 已经有 9。只剩 B2。
  2. B4 = 6。 在宫 2(上中)里,6 在行 A 被 A2 的 6 挡住,在 C6 被第 6 列 E6 的 6 挡住。这样就剩 B4。
  3. B9 = 5。 在宫 3(右上)里,5 在行 A 被 A3 的 5 挡住,在行 C 被 C5 的 5 挡住。只有 B9 能放它。
  4. B3 = 8。 行 B 现在是 1、9、_、6、3、4、2、7、5。只缺 8,所以它填在最后一个空格里。这是整行范围的隐性唯一数,引擎就是这样称呼它的。

第 1 到 4 步不用一个笔记,就解出了整个行 B。简单题就是这个规律:已知数足够密,扫描宫就能不断得到填数。引擎接下来的填数是 C7 = 6、C8 = 3、A9 = 8、C6 = 8 和 D9 = 6,之后一直这样进行到结束。完成的盘面开头是 365712498、198634275、427958631。

注意,这里这个方法从未需要什么:数对、宫内指向数对或任何猜测。靠扫描就能解,是因为这道题是简单题。更难的题会走到扫描无计可施的地步,那就是下一节。

卡住了怎么办

卡住的意思是,把每个宫、行和列完整扫一遍也找不到唯一数。不要猜。改为运行这个循环:

  1. 写笔记。 在每个空格里填上它所有合法的候选数。这一步一开始很慢,但会为后面省下时间。
  2. 检查显性唯一数。 写下候选数之后,任何只显示一个数字的格都是一次填数。
  3. 找数对。 一个区域里有两个格,含有相同的两个候选数:这两个数字属于这两个格,所以从该区域的其他格中擦掉它们。细节,以及隐性版本和三数组,见显性数对与隐性数对。
  4. 找宫内指向数对。 如果一个数字在宫内的候选数都在同一行或同一列,就把这个数字从该行或该列的其余部分擦掉。反过来,一条线上的候选数都在同一个宫里,就是宫行列排除法。
  5. 回到唯一数。 每次排除都可能让某个格只剩一个候选数,或让某个数字只剩一个落脚处。从上面方法的第 1 步重新扫描。

如果你走完这个循环,盘面上满是候选数,却没有数对或宫内指向数对,说明这道题超出了你现在的工具箱,而不是题坏了。先用新手技巧检查你的笔记有没有错,因为漏擦一个就会藏起很多真正的唯一数。

什么时候升一个难度

我们游戏里的难度,是一道题需要的最难技巧,由 Sudoku Explainer 衡量:简单是 1.0 到 1.9,中等 2.0 到 2.9,困难 3.0 到 4.9,专家 5.0 到 6.9。出现下面这些情况就可以升级:

  • 你只靠唯一数就能完成简单题,不用笔记,也没有错误。
  • 中等题现在感觉很平常,也就是遇到卡住的地方,加上笔记,靠数对和宫内指向数对能过关。
  • 你对下一个技巧好奇,而不只是想把当前的做得更快。

如果你还在猜,或者同样的技巧总是失败,就先别动。在一个难度上熟练,比跳到一个你还没学会工具的难度更有价值。试一道新的简单题检验自己,当上面的循环开始变得自动化时,中等难度就是下一步。