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