本书讲述数独的四大基本技巧:排除、唯一余数、区块和数对,还讲述八大定式候选数技巧:数组、普通鱼、鳍鱼、短链技巧、唯一矩形、可规避矩形、全双值格致死解法和欠一数组。
欢迎各位来到数独的殿堂!在这里,你可以跟我们一起学习非常多的数
独技巧!让我们先来学习数独的基本概念吧!
一、数独的玩法
数独是一个古老的数字游戏。我们需要在整个9×9的“棋盘”空格里填入数字,在1~9里选择一个合适的数字填入其中,使得每一行的9个格子、每一列的9个格子,以及每一个由粗线围起来的3×3的9个格子里,均刚好包含一组完整的1~9,每一个数字都出现一次,而且不含有重复项。
例如,下列左图是一个数独的题目,我们需要填入数字,然后得到右边给出的解。
按照右侧给出的答案来看,确实是满足刚才所介绍的规则的:每一行、每一列和每一个粗线围起来的3×3的9个格子,全部恰好包含一组完整的1~9。这就是数独的基本玩法。
可以看到,这样的规则是很简单的,它不需要我们使用数学知识来进行加减运算。只要使得数字在填入的区间不重复就可以了。因此,规则还是很好理解的,也非常好上手。
二、数独和唯一解
数独是有一个唯一解的基本要求的。这个唯一解呢,其实说的是“一个题目只有一个正确答案”的基本规则。
例如前面给的这个例子里,左边的题目只有右边这一个答案。换句话说,你无法找到另外的一种填法(即格子里填入和答案给出的不同的填数,并且还满足前文给出的“一套完整的1~9”的规则,这是不可能做到的)。
对于出题人来说,能够为玩家提供一个合适的、正确的数独题目是非常重要的事。
三、坐标表示
除了需要提前知道前文介绍的规则,我们还需要了解一下数独的坐标表示规则,以便后续更好地描述格子信息和数据。
坐标一共有两种表示规则,一种叫RCB表示法,另一种叫K9表示法。
(一)RCB表示法
RCB表示法,就是使用R、C、B三个字母来表示一个格子的具体位置。R是英语单词“行(row)”的首字母,C是英语单词“列(column)”的首字母,B则是英语单词“宫(block)”的首字母。所谓的宫,就是3×3的粗线围起来的、也满足“1~9不重复”规则的一组单元格。
一般来说,我们只会用到R和C进行单元格的位置表示。比如,R3C4表示的是第3行的第4个单元格(第3行、第4列);当然,有些地方也不对R、C、B字母作大小写区分,因此可以写小写字母:r3c4,这也表示第3行的第4个单元格。
按照次序,我们把整个“棋盘”分割为了9行、9列和9宫。按照顺序,从上到下依次编号为第1行到第9行,而从左到右则依次编号为第1列到第9列,而宫则稍微复杂一些:从左到右、从上到下,每三横排包含3个宫,而整个棋盘一共包含9个这样的宫。所以左上角标为第1个宫,然后顺次是第2个宫、第3个宫;中间是第4、第5、第6个宫;最下面的是第7、第8、第9个宫。如图所示。
在这个表示法里,字母B(表示宫)很少用到,所以就不多说明了。等运用到了再来说明。
另外,坐标是可以合并表达的。比如,r2c3和r3c3的“c3”部分相同,因此两者可以合记作r23c3,将r2和r3的2和3直接连起来。实际上这也是合理的,因为数独只会用到1~9,因此两个数字写在一起的23也不会被看成二十三。当然,列也可合并,比如r2c3和r2c4也可以写成r2c34。
RCB表示法好在写起来很容易理解,但不好的地方在于仍然有点长——r
和c必须要写出来。
(二)K9表示法
K9表示法是另外一种表示坐标的方式。我们直接使用字母A~I,以及数字
1~9来表示行和列的数据。
比如,D6这样的写法,字母表示的是坐标的行,而数字则表示坐标的列。必须是先字母后数字的顺序,千万不要写反了。D6的D是A、B、C、D的D,是排在英文字母表的第4个字母,因此表示的是第4行,而6就表示第6行。
因此,D6就是第4行第6列的格子。
这种表示法好在,它甚至省略了字母R和C的书写,直接改用字母表示行,这样达到了速记的效果。不过弊端就在于,初学的时候容易弄反,而且对字母表不熟悉的小伙伴可能需要脑子里先想想字母具体在哪一行,然后才能搞明白坐标的表示位置。
不过,这些都不是问题,因为题目只会用到9个行,所以只会有9个字母A、B、C、D、E、F、G、H和I,即使你现在不熟悉,接触多了数独题目之后,就算不刻意去背也可以达到很熟悉的程度。
另外,这样的表示也可以简写。比如D34表示D3和D4两个格子、AB2表示第1、第2行的第2个格子。和前文一样,因为数独最大只会用到数字9,所以写在一起的数字也不会被认为是一个两位数而导致误读,可以大胆简写成这样的形式。
那么,这种表示法为什么叫K9表示法呢?这个字母K是哪里来的呢?
因为在发明这个记号的时候,玩家认为字母I(即表示为第9行的字母)容易和数字1混淆(它俩长得很像),所以“顺延”了一个字母(即J来表示第9行)。随后又觉得J和I也长得差不多,尤其是有一些字体,I和J在电脑和打印出来的纸上,长得可以说是一模一样,所以J也容易和数字1混淆,导致继续“顺延”到了字母K上。所以在早期,字母K也表示第9行,如K3就表示第9行的第3个格子。但是,这么记不便于后期描述本书中的一些内容,所以本书仍然使用字母I来表示第9行。只不过,K9表示法里的“K”是这么来的。
那么,需要提前了解的数独知识点就介绍到这里。下面做一个总结:
盘面:表示题目的完整“棋盘”。一个棋盘就可以称为一个盘面。
行:表示题目横着数的9个单元格(即格子)。
列:表示题目竖着数的9个单元格。
宫:表示题目使用3×3的9个单元格。它们是用独立的粗线分隔出来的
一组单元格。
坐标:用于简化表示和表达单元格的方式。一共有两种A。
解:一个题目的答案。一个题目只允许有一个答案,即题目必须保证唯一解。
四、数对
数组技巧是最后一种我们必须掌握的数独技巧。数组按照规格可分为数对A、三数组B、四数组C三种,而按照观察来看,可分为显性数组和隐性数组两种。按照一般层面来说,考虑到技巧的易学性和技巧的实用性,数组里的数对是初学者必须掌握的部分,而三数组和四数组,我则会放在下一个篇章介绍;不过数组的显性和隐性在这里都会介绍到。首先要介绍的就是隐性的数对结构。
A数对在早期也称为二链数、二数组、双数组和二元组等。
B三数组在早期也称为三链数、三元组等。
C四数组在早期也称为四链数、四元组等。
(一)隐性数对
如盘面所示,我们观察第2个宫可以发现,3和4具有相同的可以填入的位置。先看3。它在第2个宫只能放在B46里。再看4,发现在第2个宫里也只能放在B46。
好巧不巧。第2个宫中,3和4只能放在相同的两个格子之中。这意味着什么呢?这意味着B46必须是“一个3、一个4”的状态,这是显然的。因为别处已经无法放3和4了,它们被挤压到这样两个单元格里。这两个单元格里放入一个3、一个4,还只能是恰好放进去,完全没有多余的可以放入的情况。那么,这两个格子就必须是一个3、一个4,才能让3和4都正确填入第2个宫里;否则,但凡有一个格子填入除3、4以外的数,那么3和4中就会有一个数字无法填入到第2个宫里,第2个宫就无法满足一套完整的1~9。
这一结论有什么用呢?虽然,我们还无法确定具体是B4还是B6是3。没有关系。确定好3和4在第2个宫必须放在B46就行了。
接着我们来看下一个步骤。如上盘面所示。在B46只能是3和4的情况下,再次观察第2个宫可以发现,2就只有唯一的一处可以填入了,即B5=2。首先,可以通过基本的宫排除技巧排除掉A4和C456四个格子填2的情况,而B46也不能填2(它们只能是3和4,没别的可能性)。所以,2只能放在B5,它是唯一一个可以填入2的位置了。因此,B5=2是这个题目的结论。
可以看到,我们利用排除的过程,将B46的填数机会给“占领”了,致使B46无法填入任何其他的数字。此时再去看别的数字,就可以得到结论。这种思想称为占位。这种技巧称为数对占位法,不过它一般叫隐性数对。这个隐性怎么去理解呢?
我们单看B46两个格子,通过唯一余数来挨个排除可以发现,实际上这两个格子是可以不填3和4的,它们还有别的填数情况。比如,B4除了3和4,还可以有1、2、7、9这些填数情况,而B6则还可以填入1、2、9。如果不看这个技巧推导的结论(即排除掉这些情况),“必须是3和4”的最终情况实际上是隐藏在其中的。因此,这种数对结构也称为隐性的数对结构,而和区块类似,B46(34)A称为隐性数对结构,而使用这个结构得到结论的技巧过程称为隐性数对技巧。
(二)显性数对
和隐性对应的就是显性了。隐性用的是排除,那么显性呢?猜都猜得到,自然就是唯一余数了。
B46(34)即B46 两个单元格涉及3 和4 两种数字的情况。这种记号有些复杂,所以将它的意思以脚注形式呈现出来。和前文介绍的坐标表示类似,数独只用到9 以内的数,所以3 和4 之间不需要任何符号分隔就可以清楚确定是3 和4 两个数字,而不会被看成三十四。
①第一种类型:死锁数对
如盘面所示,请仔细观察第6个宫。在第6个宫里我们可以发现,D79两个单元格只能填入1和4两种不同的数字。先看D7,通过唯一余数的基本数数操作,我们可以发现,只有1和4没有出现在这个单元格所在的行、列、宫之中;而D9也是同样的情况。
这一次,我们使用唯一余数的思路得到D79都只能是1和4的情况,而D79恰好都在第4行和第6个宫,因此D79也不能是相同的数字。所以要么D7是1、D9是4,要么是D7是4、D9是1。那么在第4行和第6个宫的其余单元格之中,1和4就都不可能出现了。因为第4行和第6个宫可以填入1和4的机会全给D79两个单元格了,毕竟D79必须是1和4是我们刚才得到的必须满足的条件。
得到这个结论之后,我们可以继续观察第5个宫。
如盘面所示。我们可以在第5个宫里确定数字1的最终填数位置。首先通过宫排除得到E4<>1的结论,而D6<>1是因为D6与D79位于同一行。所以,1只能填入E6之中,即E6=1是这个技巧的结论。
可以看到,在推理过程中,我们也用到了一个和隐性数对差不多的将两个格子组合在一起思考的思维方式,所以这个技巧也称为数对技巧;但这一次我们用到的是唯一余数而不是排除,所以我们把这种技巧叫作显性数对。为啥是显性呢?因为这次我们可以只看D79就得到结论。这一次,D79两个单元格并不包含任何其他的填数可能,只有1和4可以放进去。这就意味着1和4是“暴露”给玩家的。
②第二种类型:普通的显性数对
刚才我们看到的数对技巧是可以同时作用于两个区域(第4行和第6个宫)的。但大多数时候,数对并不一定可以影响到两个区域,更多还是只能影响到一个区域。
如图所示。这次我们关注第5行。
其中,通过唯一余数的数数操作进行逐个排除,发现E1只能填入4或8;而再看E7,也只有4和8两种可能性。
思考一个问题。它和前面的例子有没有区别?几乎是没有的,只是把两个挨着的单元格给拿到同一行上来了,导致两个单元格此时并不同宫,这是它们唯一的区别。但是,它俩处于同一行,意味着仍然不能填入相同的数字,而它俩又确实只能填入相同的两种数字4和8,就这一点来说,它和前面的例子逻辑是一致的。那么,E17的填数情况,要么E1是4、E7是8,要么E1是8、E7是4,别无其他可能。
与此同时,第5行的别处就不能填入4和8了,否则无论是4还是8,都会出现重复的情况,违背数独的规则。
如上盘面所示,我们再对E9使用唯一余数的逻辑,就可以得到合适的结论了。首先,E9所在的行、列、宫已经出现了1、2、3、5、6、7这些数字,所以E9<>123567A。而E17必须是4和8,且E9刚好和E17两个单元格处于同一行,所以E9<>48B。因此,E9只能是9了,因为别的数字全被排除掉了。
所以,这个题目的结论是E9=9。我们把这种技巧也称为显性数对,只不过它并不会同时影响两个区域。
(三)隐性数对的观察
隐性数对和显性数对的形成原因不同,所以需要分开描述观察方式。
首先是隐性数对。隐性数对特别不好观察的原因在于,它涉及两种不同的数字。在盘面没有任何标记的情况下,简直无从下手。……