邏輯解數獨的logo

各類解法

下面的解法根據複雜程度排列,如果解法表格改變了,那麼解法器就會重新使用方法一來開始。

 

每次都有一個特殊的方法被使用,方法的不同難度使用「難度係數」來表示。

方法 A

解法器會在行(列)中尋找那些只出現過一次的數字,出現那個數字的表格即為正解。解法器重複使用方法一來完成謎題。

難度係數=4

方法 B

在行中檢查是否有在每一個九宮中只出現過一次的數字。這個數字一定會出現在當前行中,所以在填充九宮的時候去除掉這些數字。然後再在列中重複使用這個方法。

還有另外一種類似的方法:在九宮中尋找在行或者列中只出現過一次的數字,然後在行和列的復員中去除這些數字。

難度係數=8

方法 C

在解法表格的行中尋找那些在行中只出現過兩次的數字。如果它們出現的表格和另外使用這個方法篩選出來的數字所在位置相同,那麼這表格一定會包含這對數字——所以在其他的表格中就能去掉這兩個數。然後重複這個方法多次。

難度係數=16

方法 D 最新!

由阿蘭·錢伯斯(Alan Chambers)校訂解法代碼,感謝他!

在解法表格的行(列、九宮)中尋找是否有N個格子都只包含相同的N個數字。如果這個「鏈」存在,那麼這 N 個數字肯定就在該鏈的這 N 個格子中,所以我們可以在此行(列、九宮)的其他格子中去除這些數字的可能性。

然後再在列和塊中重複這個方法。

比如,在下面這個行中:

1         2         3         4         5         6         7         8         9
---------------------------------------------------------------------------------
378       38        6789      37        458       2         34568     489       1

第一,第二和第四列這三列都只包含3,7和8這三個數,所以這三個數肯定位於第一、第二和第四列中。

所以我們把第三列去掉[78],把第五列去掉[8],把第七列去掉[38],最後把第8列去掉[8]。

之後這行變成了:

1         2         3         4         5         6         7         8         9
---------------------------------------------------------------------------------
378       38        69        37        45        2         456       49        1

如果要練習這個方法,請到這裡.

當N=2,3,4的時候難度分別為32,48和64。

方法 E - 還沒完成

我們現在正在完善一個新的方法,但是還沒有完善。如果您想要看這個方法的解法原則,或者您希望幫我們完善這個方法,請點擊這裡

方法 F 更新了!

這個方法比前面的都要複雜。

但是它也有簡單的一面:首先需要在行中找到哪個數字只出現兩次。如果有一個行對於同一個數字滿足這個規則,而且數字所在的列也符合,那麼這個數字就會出現在滿足條件的四個格子之二。你可以不考慮這個數字在此行和此列其他位置的可能性。然後對於列再重複這個規則。

這個方法是由讓人尊敬的X-wing完成的

對於3x3塊,這個方法也適合用:

如果對於每一行,如果符合條件的兩個格子位於相同的兩個九宮中,你可以去除掉其他的可能性。你可以對於列重複這個方法。然後對於九宮重複方法。如果兩個九宮共同使用列和行,並且某個數字只出現在其中兩個格子中,那麼其他的可能性就可以被去除了。(非常複雜……我自己都不知道我在說什麼……呵呵)

當兩個格子變為三個的時候,這個方法被稱為 Swordfish 方法。克雷戈·奧克利(Craig Oakley)為 Swordfish 專門寫了代碼,我們也稱這個方法為F2。

最後當規則中的格子變為四個的時候就會出現問題。錢伯斯有一次驗證了這個方法中N個格子時候的複雜性。結果有點讓人覺得興奮,他把N=4時候的方法命名為 Jellyfish,我覺得你看了整個過程之後你可能會覺得膝蓋發軟……

難度係數=64

其他解答方法

其他解法規則可以在John Perry的網站找到。這些非常複雜不過也許您可以用 JavaScript 寫它們

什麼是「猜測檢測?」(Guess-and-Check)

這個檢測方法通常被稱為「Ariadne」方法。如果所有的方法都用完了還沒能解決謎題,那麼就需要進行猜測,然後在實驗出合理數字後再使用合適的方法。如果這個結果出現在不合理的數獨謎題中,這個方法就會進行不用的猜測。如果還有可用的選擇,那麼猜測法就會遍歷整個表格尋找答案(或者返回無解的謎題)。這個方法是否符合「邏輯」現在還有爭論,所以我們把這個方法做成可選的選項。

只返回第一解法

如果你使用了猜測檢測方法,那麼通常一個表格內會有多個數字的可能性,這樣一個數獨就可能就可能有多種解法了。這時候需要取消「只返回第一解法」的復選框,這樣就會檢查所有的可能性,驗證出哪個才是獨一無二的方法。

非常感謝……

非常感謝http://www.act365.com/sudoku/網站的'rubylips',對於阿里阿德涅方法給予了建議,並且對於其他問題也進行了指正。

非常感謝r.e.s提供了證明數獨謎題是NP問題,並且測試了解法器。

感謝彼得·福曼(Pete Forman)對於方法二中對於九宮的部分的更新。

感謝柯林·休斯(Colin Hughes)找出方法中的錯誤。

感謝科文·庫克(Keven Cook)找出報告中的錯誤。

感謝提姆·林賽(Tim Lindsay)找出了一個邏輯例子中不可復原的例子。

感謝比爾·蓋爾斯(Bill Giles)為我們提供了按部就班的方法。

感謝馬克·薩摩維爾提供了方法五和方法六。

感謝凱文·勞森(Kevin Lawson)提供了挑戰謎題的建議。

感謝約翰·馬克列歐(John MacLeod)提供了方法四的校訂版本。

感謝大衛·巴吉特(David Budgett)和約翰·馬克列歐(又是他!)對於方法六中「九宮」部分的貢獻。

感謝提姆·諾貝爾(Tim Nobel)和麥可·勞倫斯(Michael Lawrence)提供的意見。

感謝阿爾·錢伯斯對於方法四的校訂,非常酷的工作!

感謝克雷戈·奧克利的 Swordfish 方法。

感謝艾爾,再次感謝對於方法六的貢獻。他做的工作比我還多!

感謝尼古拉斯·列奧特(Nicolas Leoutre)把網站翻譯成法語。

感謝瑟寧·范·德·克羅(Sernin Van de Krol)把這個網站翻譯成荷蘭語。



回到首頁

請點擊下面的亞馬遜網站鏈接來幫助我們。