不了解數獨的人,請先看我第一篇文章
數獨的規則以及元素
現在你應該知道數獨的基本規則,以及行、列和宮
避免你沒看前面那篇文章,我解釋一下我用到的坐标體系
R 代表行,C 代表列,B 代表宮
R1C1 指第一行第一列那個格子
R23C1 指第一列的第二行和第三行 2 個格子
R1C23 指第一行的第二列和第三列 2 個格子
B1 代表第一宮
本文隻是數獨的基礎技巧和快速入門,如果都學會還想繼續深入,請等待我的後續文章
把這篇文章的技巧都能用的出神入化以後,你玩數獨已經很厲害了
好了,說正題。
做數獨第一個要用到的技巧和思路是什麼呢?
答案一定是 「排除法」
什麼是排除?
根據數獨規則,如果某格内出現了一個數字,與該格同行、同列同宮的位置不能再出現相同的數字。這種排斥同行、同列、同宮其它格内出現相同數字的思路就是排除。見下圖:
排除法怎麼用?
排除法主要分為:1 宮内排除法、2 行列排除法、3 區塊排除法。
宮内排除法
針對某宮進行排除,找到隻有一個位置可以填某數。
見下圖
觀察數字 2
B1 和 B3 的 2 讓 B2 的 R12 都不能填 2,那麼 2 隻能在 R3C6
B3 和 B4 的 2 讓 B6 的 C8 和 R6 都不能填 2,那麼 2 隻能在 R5C9
行列排除法
針對某行或某列進行排除,找到該行或該列隻有一個位置可以填某數。在數獨中,行和列其實是一樣的,所以行和列通常會一起讨論
見下圖
觀察 R5,B6 的 2 讓 R5 在 B6 的 3 列都沒法填入 2,所以 2 隻能在 R5C6
再解釋一下為什麼是行列排除,因為每一行列必須都要有 2,R5 這行的 2 隻有隻一個位置可以填了,把行變成列也是一樣的。
再看一個例子
還是看 R5,C268 的 2 都因為這些列已經有 2 無法填入,那麼 2 隻能在 R5C9
再說一句,行變成列是一樣的
區塊排除法
利用排除形成區塊,再利用該區塊作為排除其他位置的條件進行推理填數。
不好理解是吧,看例子吧
下圖中,R5 已經有 4 了,所以 B6 的 R5 不能填 4,4 隻能在 R46C9 這兩個格子中
既然 4 隻能在這兩個格子,那麼 C9 的 4 也就一定在這兩個格子裡面,B9 的 4 不能出現在 C9,隻剩下一個位置可以填入,R9C8 就一定是 4
再看一個例子
R4 的 8 讓 B4 的 8 隻能出現 R6 中,這樣的 R6 的 8 一定在 B4 的這三個位置
這樣 C8,R4 和 R6 交叉排除,B6 的 8 隻能出現在 R5C9
我再總結一下區塊排除法
某一個數字在一個宮裡面,隻出現在某一行或者某一列,那麼在這一行或者列的其他宮内就不能出現了。
這個方法在實際運用的時候可能沒有前面兩種那麼容易看出來,當用前面兩種排除法的時候,有些宮雖然沒法确定數字,但可以把可以填入數字的地方先做好筆記,方便觀察。
後面我還會講一下解決數獨的時候用的方法順序大概什麼樣的。
好的,排除法就說這麼多,接下來說另外一種方法
唯餘法:也稱唯一餘數法,指的是某格裡隻剩下唯一的數字可以填了。
數獨中任意一個格子都可以填入1-9,如果某格的同行、同列和或同宮中已經出現了8個不同的數字,那麼該格隻能填入沒出現的第 9 個數字。
這個思路與排除法不同,排除法是利用已知數字填出相同的數字,而唯餘法是利用已知數字填出不同的數字。
看兩個例子,一下就理解了
藍色的 1 這個格子,和它相關的行列已經有 2-9 了,隻剩下一個 1 沒有填。
第二個稍微複雜一點,但還是一樣的,和藍色 1 有關的行列宮有 2-9 了
應該能理解了吧,具體要怎麼用,我後面會說
第三個方法
數對占位法:利用數對占位作為間接條件,再配合其他數字的排除推理的方法。
數對是指兩格與兩數相互對應,但還無法确定兩數在這兩格中具體的位置。
還是看例子
R4 的 24 和 R6 的 24,讓 B5 的 24 隻能出現在 R5C56
C4 的 3 和 C5 的 3 排除完後,B5 的 3 的位置是 R56C6
但 R5C6 已經被 24 占據了,你不能填入 3,3 就隻能在 R6C6 了
數對最重要的是起一個占位的作用,雖然我不知道 24 在這兩格裡面的具體位置,但我把這兩格占住了,除了 24 其他的都不能填,你填了除 24 外的任何一個數字,24 中就有一個沒法填了
另外數對還有一個作用是做删減,上圖這個例子因為通過排除法出來的,所以沒有需要删減的地方,如果有些數對是通過唯一餘數法出來的,比如還是 24,那麼除掉這兩個格子,其他和這兩個格子相關的地方都不能是 24
這個也能引申到 N 個有關系的格子(同一行,同一列,同一宮)總共有 N 個數字,那麼這 N 格數字一定在這 N 個格子裡面
後面說的我會專門寫一篇來講,如果現在不理解也沒關系
好了,幾個基礎方法說完了,我來說一下遇到一個數獨題目應該怎麼開始
怎麼解一個數獨
先看這個數獨已知數最多的那個數字,比如有 6 個 1,5 個 4 等等,那麼我們先從 1 開始,用宮内排除法,看看是不是能确定其他 1 的位置,就算不能确定,也先做好筆記,如果已知的隻有 1-2 個就先不看了,超過 4 個的都值得先做筆記,這個時候一定需要注意看區塊排除法,區塊排除法越晚看越不好找到
然後,找相關已知數最多的格子,看看唯餘法是不是能夠把數字直接填出來,就算填不出來,也請做好筆記,這個時候這個格子基本隻有 2-3 個候選數
接下來找已知數最多的行,列,宮,比如某一行已經有 6 個數出現了,隻剩下 3 個,先看看能不能填入數字,如果填不進也做好筆記
找數對,然後再排除
重複上面的步驟,如果沒解出來,但應該需要把所有格子能夠填入的數字都做好筆記了
再找一次數對,做一次排除,這個時候大部分的數獨就應該能解決了。
如果解決不了,說明這個數獨的難度超過了這篇文章所說的方法,後續我還會接着寫更多的方法。
開始練習
這些方法看了容易懂,但怎麼用還是得去做數獨的題目。解決掉 5 個數獨的題目,這些方法就熟練了。
如果你是 iPhone,我自己寫了一個 iOS 版本的數獨,用這些方法能夠解決 App 裡面簡單和中等難度的題目,更高難度的題目技巧等我後續文章吧。
Appstore 數獨遊戲
Android 我看到有一個全民數獨還不錯
繼續閱讀實戰篇
解出你的第一個數獨
,更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!