0 前言

有天突然想起数独这一游戏玩一玩,结果1个小时做不出一个困难的题,我只会用基本的一些填数方法,根本不知道该怎么填。
于是看了一个数独分步解的网站,找了一些攻略,就明白了填数独的原理了。也很快就学会了如何填写一个较难的数独。

1 数独简介

最常见的是9x9的数独,填写规则是9行、9列以及9个9宫格中各有且仅有123456789这9个数字。
1.png

因此每个数字所在宫、行、列都不能有重复的数字。如下图,A数字所在宫、行、列共21格内仅有一个此数字。
2.png

2 填数方法

2.1 唯一余数法

最朴实的方法,一个格子内能填的数不能与该宫、该行、该列任何数字重复,如果这里面已经有了8个数字,那么它就只能填另一个数字了。

例1:下图中数独的第8宫的第9位(坐标:
123
456
789
)可以看到该宫、行、列已有数字12345689,那么此处只能填7。
3.png

2.2 交叉排除法

我们注意到,数字不仅不能重复,而且必须有这个数字。因此如果一个宫格内,排除到只剩一个格子,那么这个数字就在这个位置。

例2:看到所有的2,对于中间宫格的5个空位,第468宫的2排除了4个,那么2只能填在第1位。
4.png

当然,如果排除到还剩两个同行/同列的格子,可以推断出在这两个格子之内,从而推断其它格子。

例3:看所有的2,首先对于第3宫来说,排除了5个空格,因此2只能填在橙色方框内。接着再看第6宫,通过2排除4个空格,然后由于橙色位置的2排除了第2位,因此2只能填在第6位。
5.png

这种方法不仅对宫格适用,同样地对一行或者一列适用。

2.3 筛选法

一般来说,数独使用以上两种方法基本可以解完了。如果遇到不能继续排除的情况,可以使用筛选法,即写出一个格子可以填的数字,来排除其他位置的数字。

例4:写出可能数字,发现最上方一排,只有第3宫的两个空位可以填5,所以5在第3宫第12位,因此第4位的5排除,第4位只能填4。
6.png

2.4 假设法

填到最后可能就只剩少量解,用推理已经无法继续往下解了。可以直接用假设试填的方法解完。

例5:写出可能数字,就剩246三个数,可以直接假设某个格子为2、4、6来求解,如果冲突则是另一解。
7.png

当然也可以任意设第三列连续三个数为X、Y、Z,从而填出其他数字,然后发现Y的格子里只有6是相同的,因此Y=6,从而解出其它数字Z=2,X=4,填完数独。
8.png

3 结语

利用以上方法,就可以解决所有的数独了。一般来说数字少时用交叉排除法(从1到9,建议从比较多的数字开始做),填了较多数字时用唯一余数法。当找不到一般解法时再用筛选数的方法。

4 参考

https://www.zhihu.com/question/22904542/answer/23049971
https://zhuanlan.zhihu.com/p/94481806
在线玩:https://www.sudoku.name
在线分步解:https://sudoku9x9.com/smartsolver.php (推荐!查看分步解法来提升自己)