|
數(shù)獨是一種可愛的益智游戲。它需要你在空格內填入1到9的其中任意一個數(shù)字,使得每一行、每一列以及每一個正方形的小九宮格內的數(shù)字都不能夠有重復數(shù)字。例如下面三個盤面格子(以后均簡稱盤面)所示,分別是行、列和小九宮格(以后均簡稱為宮)不重復的情況。



盤面1到盤面3
當然,整個盤面的每一行、每一列和每一個宮都得做到像上面三個圖所示的那樣,不重復。只要有兩個數(shù)字相同了,那就一定錯了。 數(shù)獨,顧名思義,數(shù)字的出現(xiàn)必須要“獨”,也就是不得重復。但是“獨”不僅僅只有這個意思。它還有一“獨”,是任意合格數(shù)獨盤面都只有唯一的一個答案,這被稱為唯一解定理(Unique Law)。說白了,每一個格子都只有唯一的一種填法。這樣,才能真正體現(xiàn)數(shù)獨的“獨”的特性。這樣才叫“獨”之道。 每一個數(shù)獨盤面最少都得有17個用于推理解題的提示數(shù)(Hints/Clues),因為經電腦演算發(fā)現(xiàn),能夠保證唯一解的數(shù)獨盤面至少都得17個提示數(shù),但目前暫未發(fā)現(xiàn)其邏輯證明手段。如果提示數(shù)少于17個的話,那么它一定是一個多解題,這樣的題就是不合適的。但是,也并不是隨意寫上17個提示數(shù),就一定是唯一解的數(shù)獨題。
在任意一個數(shù)獨中,每一行我們記為字母A到I,而每一列我們記為數(shù)字1到9。那么在第3行的第6格我們就會簡記為“單元格C6”,而其前面的單元格三個字可以被省略。
 盤面4

盤面5
上面有4個數(shù)字,那么我們可以將“第5行第5格內是數(shù)字1”簡記做“E5=1”;同理,其他的3格可以記作“A3=9”、“C7=5”和“H7=6”。 單獨只說第3行的話,就可以直接記作“行C”,第6列就記作“列6”。如果單元格C7在哪個宮,則是按照從左到右、從上到下的順序依次排序得到的宮的編號,如盤面5所示,A3在宮1,C7在宮3,等等。
還有一種表示方法。 我們提到的行、列、宮的概念,它們被統(tǒng)稱為單元(Unit)或者區(qū)塊(Region);而每一個格子,則都被叫做單元格;另外,盤面上給出的所有已知數(shù)字,我們都稱為“提示數(shù)”。那么,第1行第2格就可以采用“行1列2”的形式表示,并簡寫為“R1C2”;“宮3的單元格C7”可以記作“R3C7(B3)”。其中,R、C、B就分別代表行、列、宮,都是對應英文單詞的縮寫。 這兩種表示方法中,字母C都會被用到,所以應注意區(qū)分:一個代表第3行,而另一個則是“列”的簡稱。 另外,在任意一個數(shù)獨盤面中,每個單元格都有19個共軛單元格(Peer)。例如盤面4內的E5,由于它屬于行E、列5和宮5,所以它的共軛單元格有行E的所有單元格、列5的所有單元格和宮5內的所有單元格。這樣,就有19個共軛單元格。這20個單元格稱為數(shù)獨20格定理(Peers' Law)。
標準數(shù)獨大體可以分為3個類型。 第1類,是可以根據數(shù)獨的規(guī)則,直接觀察就可以填入數(shù)字的題目,這一類只會使用到一些簡單的邏輯推理方法; 第2類,是可能不能靠直觀直接填數(shù),而需要靠一些格子里面可能填入的“候選數(shù)”根據特定定式推理分析得到的矛盾情況,從而排除部分情況,以這樣的方式完成的題目; 第3類,則是根據定式都沒法完成的題目,需要自己尋找各個位置候選數(shù)的信息,根據邏輯推理,找到一些關系,從而刪掉一些不可能的情況的題目,但是,與第2種不同的是,它沒有定式,形狀都是比較靈活的,不容易觀察到。 例如,我用Hodoku打開一個題目,如盤面6所示。

盤面6
這是一個數(shù)獨盤面。每一個空格子內都有很小的灰色數(shù)字(請放大后仔細觀察——編者注),那個,我們叫做候選數(shù)(Candidates),它表示在當前格子內可以填入的所有情況。但是,一般情況下,候選數(shù)都是沒有標注出來的,這意味著需要自己標注。所以這一類題目不如第1種題目簡單。 另外,紅色數(shù)字表示題目給出的提示數(shù),黑色數(shù)字為填入的數(shù)字,下面的盤面將不再解釋。 有了大體的了解后,下面就開始技巧講解。
---> 宮摒除法(Blocked Hidden Single) 摒除法是最簡單、基礎的解題技巧。由于標準數(shù)獨的規(guī)則中說到“填入數(shù)字使得每一行、每一列以及每一個宮內的數(shù)字均不重復”,而每行、每列以及每宮都有9個單元格,而又必須填入1~9這九個數(shù)字,所以我們就應該知道,1~9這9個數(shù)字,每個數(shù)字都要出現(xiàn)。正是因為1~9都要出現(xiàn),所以我們有了這樣一種技巧。 它被分為兩種類型,一種是宮摒除法,另一種是行列摒除法。 宮摒除法是在宮內進行摒除的辦法。我們來看一個例子(盤面7):

盤面7
如盤面7所示。我們可以觀察到,數(shù)字3在宮1內只有唯一的一個位置可以填,就是A3。由于列1、列2中已經出現(xiàn)了3,并且行B、行C也出現(xiàn)了3,所以在宮1內,3的位置將不得出現(xiàn)在A1、A2、B2、B3、C2、C3這6格。而由于宮1內必須出現(xiàn)數(shù)字3,所以只能填入A3處。因此,A3=1,即如盤面7所示。 以上技巧由于在宮內得到結論,所以就被稱為宮摒除法。 有些書籍將數(shù)獨的規(guī)則寫成“填入數(shù)字1到9,使得數(shù)字1~9在每一行、每一列和每一宮內都各出現(xiàn)一次”。這樣寫其實并不太好,因為這種規(guī)則的并沒有說明“不重復”這一層意思。所以在此處,我將“不重復”的說法當作了數(shù)獨的規(guī)則。 宮摒除法是在宮內進行摒除的方式,而行列摒除法則是在行或者列中進行摒除的方式。放在之后的例子就可以清晰地給出。
---> 行列摒除法(Linear Hidden Single) 行列摒除法分為兩種,一種是行摒除法,即關于某一行進行摒除;而另外一種是列摒除法,即關于某一列進行摒除。來看盤面8。

盤面8
如盤面8所示。我們可以觀察到,在行D中,數(shù)字3的位置僅僅只能填在列1的H1處,因為列1內有5個空格,提示數(shù)3的位置使得A1、B1、C1、E1不得填入3,因此3被理所當然地“框”在了H1處。所以,H1=3。 在做題過程中,可以采用圖中的這種劃線的方式來看,直到某一行、列或宮內只有唯一的單元格沒有被“掃”過,那么它就理所應當?shù)靥钸M去了。上題是關于列1進行摒除的,所以它被稱為列摒除法。而盤面9有一個行摒除法,請找出來。

盤面9
---> 可直觀區(qū)塊摒除法(Direct Intersection) 區(qū)塊摒除法是特殊的摒除法,它和之前的摒除法有一些許的不同。它分為兩種。

盤面10
如盤面10所示。我們發(fā)現(xiàn)在宮2中,3的位置無論是在B5還是B6,都恰好在行B。但是無論怎么說,這兩個位置都必須有一個數(shù)字填入3,因此行B的其余位置都不能填3。因此,行B的其他單元格都不再可以填3。此時我們發(fā)現(xiàn),列8僅僅只有B8、D8可以填3。但是由于B8不能填3了,所以只能D8=3。 由于這是對行B進行的摒除,因此這種技巧也就被稱為行列式區(qū)塊摒除法(Direct Pointing)。 當然,也同樣有宮式區(qū)塊摒除法(Direct Claiming)。來看盤面11。

盤面11
如盤面11所示。 我們看行C,行C內填入7的位置只有C5和C6(C3被H3排除,C7被D7排除,C9被G9排除)。恰好,C5和C6又同時屬于宮2,那么宮2里面的其余單元格內都不能填入7了。再看行A,行A內本來可以在A4、A6和A8內填入7的,由于A4和A6也同時屬于宮2,被排除了,所以只有A8能填入7,所以A8=7。 如果說可以根據一次區(qū)塊摒除法這一技巧就可以直接得到填數(shù)結論的,可以被稱作“可直觀”的。 在做題過程中,可以采用圖中的這種劃線的方式來看,不過這里由于是區(qū)塊摒除法,所以有些地方不一定很直觀,就得需要自己做題中進行鍛煉,才能很快看到它們。
---> 唯一余數(shù)法(Naked Single) 唯一余數(shù)法,簡稱唯余法,是一種某個單元格中被摒除法排除情況后,只剩下1~9的其中某個數(shù)字沒有填了,從而得到它就是此單元格的值的解法。

盤面12
如盤面12所示,給出了如上的提示數(shù),普通的摒除法和區(qū)塊摒除法已經無法幫助我們找到可填的數(shù)字了。這個時候我們觀察I9。 I9同時屬于行I,列9和宮9,就看這三個單元,我們發(fā)現(xiàn)一共出現(xiàn)了1、9、4、3、5、6、7、2這些數(shù)字。根據摒除法的規(guī)則,I9的位置將不得填入它們。神奇的是,在這九個數(shù)字中,單單只有8沒出現(xiàn)。根據我們在之前的摒除法中推出的東西,即“1~9的每個數(shù)字都要出現(xiàn)一次”,得到結論,I9=4。 唯一余數(shù)法也可以適用于僅在同一個單元內部的推理,也稱為點算(Full House)。
5. 請找到如下盤面中會使用到唯一余數(shù)法的所在單元格:單元格( )=( ?。?。

|