← StudyX Devlog

数独进阶技巧:预约、X-Wing 等

Hiroki ObaraHiroki Obara · DeveloperSudoku365使用指南
数独进阶技巧:预约、X-Wing 等

数独玩久了,迟早会遇到突然走不动的题。在宫里找数字的位置,在格子里找能填的数字,把笔记全部检查一遍,下一格还是定不下来。这是学完基本技巧之后会碰到的一堵墙。

这篇文章按我建议的学习顺序,整理了越过这堵墙要用的技巧。基本技巧(在宫、行、列里找数字的位置,找格子里能填的数字,宫和行列的关系,两格组合)写在数独怎么解:初学者最先要学的基本技巧里,这里假定你已经掌握了。从这里开始的技巧,都以写好笔记(候选数)为前提。笔记的写法写在数独候选数(笔记)的写法里。

用词和上一篇一样:横的叫“行”,竖的叫“列”,3×3的粗框叫“宫”,某一格还可能填的数字叫“候选数”。图都是我自己画的,只写了说明需要的候选数。

叫法对照

进阶技巧大多直接用英文名,先把对照列出来。

本文的叫法 英文名
预约 (日本的说法,没有固定的英文名)
双重预约(隐性数对) Hidden Pair
三格组合 Naked Triple / Hidden Triple
X-Wing X-Wing
剑鱼 Swordfish
XY-Wing XY-Wing(也叫 Y-Wing)

1. 预约

日本的数独(日本常叫“ナンプレ”)讲解里,经常用到“予約”(预约)这个词。不同的讲解所指的范围略有不同。在这篇文章里,“预约”指的是:在某个宫里,某个数字能填的格子只剩下两个。还不知道是哪一个,但这个数字的座位已经在这两格里预约好了。

预约本身并不能确定格子。但看出了预约,就更容易注意到基本技巧里的“宫和行列的关系”。如果预约的两格在同一行,就可以把这一行其他宫里的这个数字删掉。

发现预约后,我觉得可以在那两格的角上小小地记一下。也有人不写全部笔记,只写预约来解题。

2. 双重预约

预约真正发挥作用,是两个数字的预约落在同样两个格子上的时候。

假设在某个宫里,4只能填在 A 和 B 两格,6也只能填在 A 和 B 两格。4和6都要填进 A 或 B。两个数字用掉了两个格子,所以 A 和 B 里不能填4和6以外的数字。如果 A、B 的笔记里写着别的数字,就可以擦掉。

上一篇的“两格组合”是从格子这一边看的技巧:如果有两格的候选数都只有“2和6”,就可以把其他格子里的2和6删掉。双重预约正好相反,是从数字这一边看的。英文叫 Hidden Pair,隐性数对。A 和 B 的笔记里写着很多别的候选数时,就很难看出它们是一对。

3. 三格组合

两格组合可以扩展到三格。

假设同一行里有三格,候选数分别是“1和4”“4和7”“1和7”。每一格都只能填1、4、7中的一个。三格用掉三个数字,所以这一行的其他格子里不能填1、4、7。

要注意的是,三格里不必每格都写着全部三个数字。只要三格的候选数合起来正好是三种数字,就成立。我想这就是三格组合比两格组合难发现的原因。

和双重预约一样,也有从数字这一边看的形式。如果某一行里,1、4、7三个数字能填的格子合起来只有三格,那么这三格里就不能填别的数字。

4. X-Wing

从这里开始,是只盯住一个数字的技巧。

以数字7为例。假设第2行里7能填的格子只有两个,第6行里7能填的格子也只有两个,而且这两格在两行里都位于同样的列:第3列和第8列。

         1 2 3   4 5 6   7 8 9
第1行    · · · | · · · | · × ·
第2行    · · ◎ | · · · | · ◎ ·
第3行    · · · | · · · | · · ·

第4行    · · × | · · · | · · ·
第5行    · · · | · · · | · · ·
第6行    · · ◎ | · · · | · ◎ ·

第7行    · · · | · · · | · · ·
第8行    · · · | · · · | · × ·
第9行    · · × | · · · | · · ·

◎是第2行和第6行里7能填的格子。第2行的7在第3列或第8列;第6行的7也在第3列或第8列。同一列只能有一个7,所以第2行是第3列的话,第6行就是第8列;第2行是第8列的话,第6行就是第3列。

无论哪种情况,第3列和第8列的7都被第2行和第6行用掉了。所以第3列和第8列的其他格子,也就是图中×的格子,可以删掉候选数7。

把四个◎连起来,是一个长方形。找 X-Wing 时,先找某个数字的候选数正好只有两个的行,再看看有没有另一行也落在同样的两列上。行和列互换也一样成立:如果两列里这个数字都只剩两格,而且在同样的两行,就可以从这两行的其他格子里删掉它。

5. 剑鱼

把 X-Wing 扩展到三行,就是剑鱼(Swordfish)。

假设某个数字在三行里,每行都只有两三个候选格,这些格子合起来正好落在三列里。这三行里的这个数字,会用掉这三列。所以这三列的其他格子里,可以删掉这个数字。

和三格组合一样,三行里不必每行都在三列都有候选数,每行两个也可以。正因为这样更难发现,我认为等熟悉了 X-Wing 再去找它就好。

6. XY-Wing

最后一个,是把三格的候选数连起来想的技巧。

要用三个只有两个候选数的格子。中间那格的候选数是“A 和 B”,和中间那格同行、同列或同宫的格子里,一格是“A 和 C”,另一格是“B 和 C”。

如果中间是 A,“A 和 C”那格就不能是 A,只能是 C;如果中间是 B,“B 和 C”那格就是 C。无论哪种情况,两端的两格中必有一格是 C。所以,和两端两格都同行、同列或同宫的格子,不能填 C,可以从笔记里删掉 C。

换成具体数字:中间是“3和5”,两端是“3和8”和“5和8”,那么同时能看到两端的格子,就可以删掉8。

XY-Wing 要从找只有两个候选数的格子开始。笔记不整齐就找不到,所以先用前面的技巧把候选数好好减下来,这一点很重要。

学习顺序

我推荐的顺序如下:

  1. 预约和双重预约
  2. 三格组合
  3. X-Wing
  4. XY-Wing
  5. 剑鱼

预约可以在少写笔记的情况下使用,先学会它,就有了后面技巧的基础。X-Wing 形状清楚,在有名字的进阶技巧里,我觉得算是比较好找的。剑鱼是 X-Wing 的延伸,但很难发现,所以放在最后。

再往后,还有很多沿着长长的候选数链条推理的技巧。英文网站 SudokuWiki 上有很多技巧的说明和例子,包括 X-Wing、剑鱼、XY-Wing 和隐性数对、三数组。

还有一点。进阶技巧是代替乱猜、有理由地减少候选数的工具。如果还是走不动,我认为在找新技巧之前,先怀疑笔记有没有写错比较好。检查的方法写在数独卡住了怎么办:重新检查的顺序里。

Sudoku365 的难度和进阶技巧

Sudoku365 是我做的数独应用,iPhone、iPad 和 Android 都能玩。“简单”“中等”“困难”“专家”四个难度各300题,共1200题。

我把收录的题目按技巧逐一解过来确认:“困难”的300题,在基本技巧之外加上双重预约、两格组合和三格组合,全部都能解到最后。可以认为这篇文章的1到3节,就是“困难”的范围。

“专家”的300题里,即使用上这篇文章的全部技巧,能解到最后的也只有一成左右。有些题在中途能用上 X-Wing 或 XY-Wing,但多数题还需要更进一步的技巧,或者耐心的推理。学了进阶技巧后,我建议先在“困难”里把预约和组合用熟,再到“专家”里找 X-Wing 和 XY-Wing。

打开“笔记”就能写候选数,把设置里的“从笔记中移除数字”(默认开启)打开,填入数字时,相关格子里的笔记会自动擦掉。进阶技巧以笔记正确为前提,所以我觉得这个设置很有用。选中一个格子时,同一行、列、宫和相同数字的格子会高亮,追踪 X-Wing 的行和列也更方便。

应用免费,会显示广告。一次性购买“移除广告”(日本为300日元)就能去掉广告。更快解题的观察顺序写在怎样更快地解数独里。

在 App Store 下载 在 Google Play 下载