不了解数独的人,请先看我第一篇文章
现在你应该知道数独的基本规则,以及行、列和宫
避免你没看前面那篇文章,我解释一下我用到的坐标体系
R 代表行,C 代表列,B 代表宫
R1C1 指第一行第一列那个格子
R23C1 指第一列的第二行和第三行 2 个格子
R1C23 指第一行的第二列和第三列 2 个格子
B1 代表第一宫
本文只是数独的基础技巧和快速入门,如果都学会还想继续深入,请等待我的后续文章
把这篇文章的技巧都能用的出神入化以后,你玩数独已经很厉害了
好了,说正题。
做数独第一个要用到的技巧和思路是什么呢?
答案一定是 「排除法」
什么是排除?
根据数独规则,如果某格内出现了一个数字,与该格同行、同列同宫的位置不能再出现相同的数字。这种排斥同行、同列、同宫其它格内出现相同数字的思路就是排除。见下图:
图中出现的已知数 5,可以排除掉同行、同列和同宫中其他格子内填 5 的可能,即打叉的格子不能再填 5 了,否则和数独的规则矛盾了。
排除法怎么用?
排除法主要分为:1 宫内排除法、2 行列排除法、3 区块排除法。
宫内排除法
针对某宫进行排除,找到只有一个位置可以填某数。
见下图
观察数字 2
B1 和 B3 的 2 让 B2 的 R12 都不能填 2,那么 2 只能在 R3C6
B3 和 B4 的 2 让 B6 的 C8 和 R6 都不能填 2,那么 2 只能在 R6C9
行列排除法
针对某行或某列进行排除,找到该行或该列只有一个位置可以填某数。在数独中,行和列其实是一样的,所以行和列通常会一起讨论
见下图
观察 R5,B6 的 2 让 R5 在 B6 的 3 列都没法填入 2,所以 2 只能在 R5C6
再解释一下为什么是行列排除,因为每一行列必须都要有 2,R5 这行的 2 只有只一个位置可以填了,把行变成列也是一样的。
再看一个例子
还是看 R5,C268 的 2 都因为这些列已经有 2 无法填入,那么 2 只能在 R5C9
再说一句,行变成列是一样的
区块排除法
利用排除形成区块,再利用该区块作为排除其他位置的条件进行推理填数。
不好理解是吧,看例子吧
下图中,R5 已经有 4 了,所以 B6 的 R5 不能填 4,4 只能在 R46C9 这两个格子中
既然 4 只能在这两个格子,那么 C9 的 4 也就一定在这两个格子里面,B9 的 4 不能出现在 C9,只剩下一个位置可以填入,R9C8 就一定是 4
再看一个例子
R4 的 8 让 B4 的 8 只能出现 R6 中,这样的 R6 的 8 一定在 B4 的这三个位置
这样 C8,R4 和 R6 交叉排除,B6 的 8 只能出现在 R5C9
我再总结一下区块排除法
某一个数字在一个宫里面,只出现在某一行或者某一列,那么在这一行或者列的其他宫内就不能出现了。
这个方法在实际运用的时候可能没有前面两种那么容易看出来,当用前面两种排除法的时候,有些宫虽然没法确定数字,但可以把可以填入数字的地方先做好笔记,方便观察。
后面我还会讲一下解决数独的时候用的方法顺序大概什么样的。
好的,排除法就说这么多,接下来说另外一种方法
唯余法:也称唯一余数法,指的是某格里只剩下唯一的数字可以填了。
数独中任意一个格子都可以填入1-9,如果某格的同行、同列和或同宫中已经出现了8个不同的数字,那么该格只能填入没出现的第 9 个数字。
这个思路与排除法不同,排除法是利用已知数字填出相同的数字,而唯余法是利用已知数字填出不同的数字。
看两个例子,一下就理解了
蓝色的 1 这个格子,和它相关的行列已经有 2-9 了,只剩下一个 1 没有填。
第二个稍微复杂一点,但还是一样的,和蓝色 1 有关的行列宫有 2-9 了
应该能理解了吧,具体要怎么用,我后面会说
第三个方法
数对占位法:利用数对占位作为间接条件,再配合其他数字的排除推理的方法。
数对是指两格与两数相互对应,但还无法确定两数在这两格中具体的位置。
还是看例子
R4 的 24 和 R6 的 24,让 B5 的 24 只能出现在 R5C56
C4 的 3 和 C5 的 3 排除完后,B5 的 3 的位置是 R56C6
但 R5C6 已经被 24 占据了,你不能填入 3,3 就只能在 R6C6 了
数对最重要的是起一个占位的作用,虽然我不知道 24 在这两格里面的具体位置,但我把这两格占住了,除了 24 其他的都不能填,你填了除 24 外的任何一个数字,24 中就有一个没法填了
另外数对还有一个作用是做删减,上图这个例子因为通过排除法出来的,所以没有需要删减的地方,如果有些数对是通过唯一余数法出来的,比如还是 24,那么除掉这两个格子,其他和这两个格子相关的地方都不能是 24
这个也能引申到 N 个有关系的格子(同一行,同一列,同一宫)总共有 N 个数字,那么这 N 格数字一定在这 N 个格子里面
后面说的我会专门写一篇来讲,如果现在不理解也没关系
好了,几个基础方法说完了,我来说一下遇到一个数独题目应该怎么开始
怎么解一个数独
先看这个数独已知数最多的那个数字,比如有 6 个 1,5 个 4 等等,那么我们先从 1 开始,用宫内排除法,看看是不是能确定其他 1 的位置,就算不能确定,也先做好笔记,如果已知的只有 1-2 个就先不看了,超过 4 个的都值得先做笔记,这个时候一定需要注意看区块排除法,区块排除法越晚看越不好找到
然后,找相关已知数最多的格子,看看唯余法是不是能够把数字直接填出来,就算填不出来,也请做好笔记,这个时候这个格子基本只有 2-3 个候选数
接下来找已知数最多的行,列,宫,比如某一行已经有 6 个数出现了,只剩下 3 个,先看看能不能填入数字,如果填不进也做好笔记
找数对,然后再排除
重复上面的步骤,如果没解出来,但应该需要把所有格子能够填入的数字都做好笔记了
再找一次数对,做一次排除,这个时候大部分的数独就应该能解决了。
如果解决不了,说明这个数独的难度超过了这篇文章所说的方法,后续我还会接着写更多的方法。
开始练习
这些方法看了容易懂,但怎么用还是得去做数独的题目。解决掉 5 个数独的题目,这些方法就熟练了。
如果你是 iPhone,我自己写了一个 iOS 版本的数独,用这些方法能够解决 App 里面简单和中等难度的题目,更高难度的题目技巧等我后续文章吧。
或者去 Appstore 搜索 禅数独
Android 你也可以先下载一个数独 App 开始练习