本書講述數(shù)獨(dú)的四大基本技巧:排除、唯一余數(shù)、區(qū)塊和數(shù)對(duì),還講述八大定式候選數(shù)技巧:數(shù)組、普通魚、鰭魚、短鏈技巧、唯一矩形、可規(guī)避矩形、全雙值格致死解法和欠一數(shù)組。
歡迎各位來到數(shù)獨(dú)的殿堂!在這里,你可以跟我們一起學(xué)習(xí)非常多的數(shù)
獨(dú)技巧!讓我們先來學(xué)習(xí)數(shù)獨(dú)的基本概念吧!
一、數(shù)獨(dú)的玩法
數(shù)獨(dú)是一個(gè)古老的數(shù)字游戲。我們需要在整個(gè)9×9的“棋盤”空格里填入數(shù)字,在1~9里選擇一個(gè)合適的數(shù)字填入其中,使得每一行的9個(gè)格子、每一列的9個(gè)格子,以及每一個(gè)由粗線圍起來的3×3的9個(gè)格子里,均剛好包含一組完整的1~9,每一個(gè)數(shù)字都出現(xiàn)一次,而且不含有重復(fù)項(xiàng)。
例如,下列左圖是一個(gè)數(shù)獨(dú)的題目,我們需要填入數(shù)字,然后得到右邊給出的解。
按照右側(cè)給出的答案來看,確實(shí)是滿足剛才所介紹的規(guī)則的:每一行、每一列和每一個(gè)粗線圍起來的3×3的9個(gè)格子,全部恰好包含一組完整的1~9。這就是數(shù)獨(dú)的基本玩法。
可以看到,這樣的規(guī)則是很簡單的,它不需要我們使用數(shù)學(xué)知識(shí)來進(jìn)行加減運(yùn)算。只要使得數(shù)字在填入的區(qū)間不重復(fù)就可以了。因此,規(guī)則還是很好理解的,也非常好上手。
二、數(shù)獨(dú)和唯一解
數(shù)獨(dú)是有一個(gè)唯一解的基本要求的。這個(gè)唯一解呢,其實(shí)說的是“一個(gè)題目只有一個(gè)正確答案”的基本規(guī)則。
例如前面給的這個(gè)例子里,左邊的題目只有右邊這一個(gè)答案。換句話說,你無法找到另外的一種填法(即格子里填入和答案給出的不同的填數(shù),并且還滿足前文給出的“一套完整的1~9”的規(guī)則,這是不可能做到的)。
對(duì)于出題人來說,能夠?yàn)橥婕姨峁┮粋(gè)合適的、正確的數(shù)獨(dú)題目是非常重要的事。
三、坐標(biāo)表示
除了需要提前知道前文介紹的規(guī)則,我們還需要了解一下數(shù)獨(dú)的坐標(biāo)表示規(guī)則,以便后續(xù)更好地描述格子信息和數(shù)據(jù)。
坐標(biāo)一共有兩種表示規(guī)則,一種叫RCB表示法,另一種叫K9表示法。
(一)RCB表示法
RCB表示法,就是使用R、C、B三個(gè)字母來表示一個(gè)格子的具體位置。R是英語單詞“行(row)”的首字母,C是英語單詞“列(column)”的首字母,B則是英語單詞“宮(block)”的首字母。所謂的宮,就是3×3的粗線圍起來的、也滿足“1~9不重復(fù)”規(guī)則的一組單元格。
一般來說,我們只會(huì)用到R和C進(jìn)行單元格的位置表示。比如,R3C4表示的是第3行的第4個(gè)單元格(第3行、第4列);當(dāng)然,有些地方也不對(duì)R、C、B字母作大小寫區(qū)分,因此可以寫小寫字母:r3c4,這也表示第3行的第4個(gè)單元格。
按照次序,我們把整個(gè)“棋盤”分割為了9行、9列和9宮。按照順序,從上到下依次編號(hào)為第1行到第9行,而從左到右則依次編號(hào)為第1列到第9列,而宮則稍微復(fù)雜一些:從左到右、從上到下,每三橫排包含3個(gè)宮,而整個(gè)棋盤一共包含9個(gè)這樣的宮。所以左上角標(biāo)為第1個(gè)宮,然后順次是第2個(gè)宮、第3個(gè)宮;中間是第4、第5、第6個(gè)宮;最下面的是第7、第8、第9個(gè)宮。如圖所示。
在這個(gè)表示法里,字母B(表示宮)很少用到,所以就不多說明了。等運(yùn)用到了再來說明。
另外,坐標(biāo)是可以合并表達(dá)的。比如,r2c3和r3c3的“c3”部分相同,因此兩者可以合記作r23c3,將r2和r3的2和3直接連起來。實(shí)際上這也是合理的,因?yàn)閿?shù)獨(dú)只會(huì)用到1~9,因此兩個(gè)數(shù)字寫在一起的23也不會(huì)被看成二十三。當(dāng)然,列也可合并,比如r2c3和r2c4也可以寫成r2c34。
RCB表示法好在寫起來很容易理解,但不好的地方在于仍然有點(diǎn)長——r
和c必須要寫出來。
(二)K9表示法
K9表示法是另外一種表示坐標(biāo)的方式。我們直接使用字母A~I,以及數(shù)字
1~9來表示行和列的數(shù)據(jù)。
比如,D6這樣的寫法,字母表示的是坐標(biāo)的行,而數(shù)字則表示坐標(biāo)的列。必須是先字母后數(shù)字的順序,千萬不要寫反了。D6的D是A、B、C、D的D,是排在英文字母表的第4個(gè)字母,因此表示的是第4行,而6就表示第6行。
因此,D6就是第4行第6列的格子。
這種表示法好在,它甚至省略了字母R和C的書寫,直接改用字母表示行,這樣達(dá)到了速記的效果。不過弊端就在于,初學(xué)的時(shí)候容易弄反,而且對(duì)字母表不熟悉的小伙伴可能需要腦子里先想想字母具體在哪一行,然后才能搞明白坐標(biāo)的表示位置。
不過,這些都不是問題,因?yàn)轭}目只會(huì)用到9個(gè)行,所以只會(huì)有9個(gè)字母A、B、C、D、E、F、G、H和I,即使你現(xiàn)在不熟悉,接觸多了數(shù)獨(dú)題目之后,就算不刻意去背也可以達(dá)到很熟悉的程度。
另外,這樣的表示也可以簡寫。比如D34表示D3和D4兩個(gè)格子、AB2表示第1、第2行的第2個(gè)格子。和前文一樣,因?yàn)閿?shù)獨(dú)最大只會(huì)用到數(shù)字9,所以寫在一起的數(shù)字也不會(huì)被認(rèn)為是一個(gè)兩位數(shù)而導(dǎo)致誤讀,可以大膽簡寫成這樣的形式。
那么,這種表示法為什么叫K9表示法呢?這個(gè)字母K是哪里來的呢?
因?yàn)樵诎l(fā)明這個(gè)記號(hào)的時(shí)候,玩家認(rèn)為字母I(即表示為第9行的字母)容易和數(shù)字1混淆(它倆長得很像),所以“順延”了一個(gè)字母(即J來表示第9行)。隨后又覺得J和I也長得差不多,尤其是有一些字體,I和J在電腦和打印出來的紙上,長得可以說是一模一樣,所以J也容易和數(shù)字1混淆,導(dǎo)致繼續(xù)“順延”到了字母K上。所以在早期,字母K也表示第9行,如K3就表示第9行的第3個(gè)格子。但是,這么記不便于后期描述本書中的一些內(nèi)容,所以本書仍然使用字母I來表示第9行。只不過,K9表示法里的“K”是這么來的。
那么,需要提前了解的數(shù)獨(dú)知識(shí)點(diǎn)就介紹到這里。下面做一個(gè)總結(jié):
盤面:表示題目的完整“棋盤”。一個(gè)棋盤就可以稱為一個(gè)盤面。
行:表示題目橫著數(shù)的9個(gè)單元格(即格子)。
列:表示題目豎著數(shù)的9個(gè)單元格。
宮:表示題目使用3×3的9個(gè)單元格。它們是用獨(dú)立的粗線分隔出來的
一組單元格。
坐標(biāo):用于簡化表示和表達(dá)單元格的方式。一共有兩種A。
解:一個(gè)題目的答案。一個(gè)題目只允許有一個(gè)答案,即題目必須保證唯一解。
四、數(shù)對(duì)
數(shù)組技巧是最后一種我們必須掌握的數(shù)獨(dú)技巧。數(shù)組按照規(guī)格可分為數(shù)對(duì)A、三數(shù)組B、四數(shù)組C三種,而按照觀察來看,可分為顯性數(shù)組和隱性數(shù)組兩種。按照一般層面來說,考慮到技巧的易學(xué)性和技巧的實(shí)用性,數(shù)組里的數(shù)對(duì)是初學(xué)者必須掌握的部分,而三數(shù)組和四數(shù)組,我則會(huì)放在下一個(gè)篇章介紹;不過數(shù)組的顯性和隱性在這里都會(huì)介紹到。首先要介紹的就是隱性的數(shù)對(duì)結(jié)構(gòu)。
A數(shù)對(duì)在早期也稱為二鏈數(shù)、二數(shù)組、雙數(shù)組和二元組等。
B三數(shù)組在早期也稱為三鏈數(shù)、三元組等。
C四數(shù)組在早期也稱為四鏈數(shù)、四元組等。
(一)隱性數(shù)對(duì)
如盤面所示,我們觀察第2個(gè)宮可以發(fā)現(xiàn),3和4具有相同的可以填入的位置。先看3。它在第2個(gè)宮只能放在B46里。再看4,發(fā)現(xiàn)在第2個(gè)宮里也只能放在B46。
好巧不巧。第2個(gè)宮中,3和4只能放在相同的兩個(gè)格子之中。這意味著什么呢?這意味著B46必須是“一個(gè)3、一個(gè)4”的狀態(tài),這是顯然的。因?yàn)閯e處已經(jīng)無法放3和4了,它們被擠壓到這樣兩個(gè)單元格里。這兩個(gè)單元格里放入一個(gè)3、一個(gè)4,還只能是恰好放進(jìn)去,完全沒有多余的可以放入的情況。那么,這兩個(gè)格子就必須是一個(gè)3、一個(gè)4,才能讓3和4都正確填入第2個(gè)宮里;否則,但凡有一個(gè)格子填入除3、4以外的數(shù),那么3和4中就會(huì)有一個(gè)數(shù)字無法填入到第2個(gè)宮里,第2個(gè)宮就無法滿足一套完整的1~9。
這一結(jié)論有什么用呢?雖然,我們還無法確定具體是B4還是B6是3。沒有關(guān)系。確定好3和4在第2個(gè)宮必須放在B46就行了。
接著我們來看下一個(gè)步驟。如上盤面所示。在B46只能是3和4的情況下,再次觀察第2個(gè)宮可以發(fā)現(xiàn),2就只有唯一的一處可以填入了,即B5=2。首先,可以通過基本的宮排除技巧排除掉A4和C456四個(gè)格子填2的情況,而B46也不能填2(它們只能是3和4,沒別的可能性)。所以,2只能放在B5,它是唯一一個(gè)可以填入2的位置了。因此,B5=2是這個(gè)題目的結(jié)論。
可以看到,我們利用排除的過程,將B46的填數(shù)機(jī)會(huì)給“占領(lǐng)”了,致使B46無法填入任何其他的數(shù)字。此時(shí)再去看別的數(shù)字,就可以得到結(jié)論。這種思想稱為占位。這種技巧稱為數(shù)對(duì)占位法,不過它一般叫隱性數(shù)對(duì)。這個(gè)隱性怎么去理解呢?
我們單看B46兩個(gè)格子,通過唯一余數(shù)來挨個(gè)排除可以發(fā)現(xiàn),實(shí)際上這兩個(gè)格子是可以不填3和4的,它們還有別的填數(shù)情況。比如,B4除了3和4,還可以有1、2、7、9這些填數(shù)情況,而B6則還可以填入1、2、9。如果不看這個(gè)技巧推導(dǎo)的結(jié)論(即排除掉這些情況),“必須是3和4”的最終情況實(shí)際上是隱藏在其中的。因此,這種數(shù)對(duì)結(jié)構(gòu)也稱為隱性的數(shù)對(duì)結(jié)構(gòu),而和區(qū)塊類似,B46(34)A稱為隱性數(shù)對(duì)結(jié)構(gòu),而使用這個(gè)結(jié)構(gòu)得到結(jié)論的技巧過程稱為隱性數(shù)對(duì)技巧。
(二)顯性數(shù)對(duì)
和隱性對(duì)應(yīng)的就是顯性了。隱性用的是排除,那么顯性呢?猜都猜得到,自然就是唯一余數(shù)了。
B46(34)即B46 兩個(gè)單元格涉及3 和4 兩種數(shù)字的情況。這種記號(hào)有些復(fù)雜,所以將它的意思以腳注形式呈現(xiàn)出來。和前文介紹的坐標(biāo)表示類似,數(shù)獨(dú)只用到9 以內(nèi)的數(shù),所以3 和4 之間不需要任何符號(hào)分隔就可以清楚確定是3 和4 兩個(gè)數(shù)字,而不會(huì)被看成三十四。
①第一種類型:死鎖數(shù)對(duì)
如盤面所示,請(qǐng)仔細(xì)觀察第6個(gè)宮。在第6個(gè)宮里我們可以發(fā)現(xiàn),D79兩個(gè)單元格只能填入1和4兩種不同的數(shù)字。先看D7,通過唯一余數(shù)的基本數(shù)數(shù)操作,我們可以發(fā)現(xiàn),只有1和4沒有出現(xiàn)在這個(gè)單元格所在的行、列、宮之中;而D9也是同樣的情況。
這一次,我們使用唯一余數(shù)的思路得到D79都只能是1和4的情況,而D79恰好都在第4行和第6個(gè)宮,因此D79也不能是相同的數(shù)字。所以要么D7是1、D9是4,要么是D7是4、D9是1。那么在第4行和第6個(gè)宮的其余單元格之中,1和4就都不可能出現(xiàn)了。因?yàn)榈?行和第6個(gè)宮可以填入1和4的機(jī)會(huì)全給D79兩個(gè)單元格了,畢竟D79必須是1和4是我們剛才得到的必須滿足的條件。
得到這個(gè)結(jié)論之后,我們可以繼續(xù)觀察第5個(gè)宮。
如盤面所示。我們可以在第5個(gè)宮里確定數(shù)字1的最終填數(shù)位置。首先通過宮排除得到E4<>1的結(jié)論,而D6<>1是因?yàn)镈6與D79位于同一行。所以,1只能填入E6之中,即E6=1是這個(gè)技巧的結(jié)論。
可以看到,在推理過程中,我們也用到了一個(gè)和隱性數(shù)對(duì)差不多的將兩個(gè)格子組合在一起思考的思維方式,所以這個(gè)技巧也稱為數(shù)對(duì)技巧;但這一次我們用到的是唯一余數(shù)而不是排除,所以我們把這種技巧叫作顯性數(shù)對(duì)。為啥是顯性呢?因?yàn)檫@次我們可以只看D79就得到結(jié)論。這一次,D79兩個(gè)單元格并不包含任何其他的填數(shù)可能,只有1和4可以放進(jìn)去。這就意味著1和4是“暴露”給玩家的。
②第二種類型:普通的顯性數(shù)對(duì)
剛才我們看到的數(shù)對(duì)技巧是可以同時(shí)作用于兩個(gè)區(qū)域(第4行和第6個(gè)宮)的。但大多數(shù)時(shí)候,數(shù)對(duì)并不一定可以影響到兩個(gè)區(qū)域,更多還是只能影響到一個(gè)區(qū)域。
如圖所示。這次我們關(guān)注第5行。
其中,通過唯一余數(shù)的數(shù)數(shù)操作進(jìn)行逐個(gè)排除,發(fā)現(xiàn)E1只能填入4或8;而再看E7,也只有4和8兩種可能性。
思考一個(gè)問題。它和前面的例子有沒有區(qū)別?幾乎是沒有的,只是把兩個(gè)挨著的單元格給拿到同一行上來了,導(dǎo)致兩個(gè)單元格此時(shí)并不同宮,這是它們唯一的區(qū)別。但是,它倆處于同一行,意味著仍然不能填入相同的數(shù)字,而它倆又確實(shí)只能填入相同的兩種數(shù)字4和8,就這一點(diǎn)來說,它和前面的例子邏輯是一致的。那么,E17的填數(shù)情況,要么E1是4、E7是8,要么E1是8、E7是4,別無其他可能。
與此同時(shí),第5行的別處就不能填入4和8了,否則無論是4還是8,都會(huì)出現(xiàn)重復(fù)的情況,違背數(shù)獨(dú)的規(guī)則。
如上盤面所示,我們?cè)賹?duì)E9使用唯一余數(shù)的邏輯,就可以得到合適的結(jié)論了。首先,E9所在的行、列、宮已經(jīng)出現(xiàn)了1、2、3、5、6、7這些數(shù)字,所以E9<>123567A。而E17必須是4和8,且E9剛好和E17兩個(gè)單元格處于同一行,所以E9<>48B。因此,E9只能是9了,因?yàn)閯e的數(shù)字全被排除掉了。
所以,這個(gè)題目的結(jié)論是E9=9。我們把這種技巧也稱為顯性數(shù)對(duì),只不過它并不會(huì)同時(shí)影響兩個(gè)區(qū)域。
(三)隱性數(shù)對(duì)的觀察
隱性數(shù)對(duì)和顯性數(shù)對(duì)的形成原因不同,所以需要分開描述觀察方式。
首先是隱性數(shù)對(duì)。隱性數(shù)對(duì)特別不好觀察的原因在于,它涉及兩種不同的數(shù)字。在盤面沒有任何標(biāo)記的情況下,簡直無從下手。……