逻辑解数独的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)把这个网站翻译成荷兰语。



回到首页

请点击下面的亚马逊网站链接来帮助我们。