数独,太难的就没啥意思了...

sudoku_blank_grid数独,是一种有趣的数字谜题。 数独盘面是一个九宫格,每一宫又分为3*3的九个小格。在这八十一格中给出一定的已知数字,利用逻辑和推理,在其他的空格上填入1-9的数字。使1-9每个数字在每一行、每一列和每一宫中都只出现一次。这种游戏全面考验做题者观察能力和推理能力,虽然规则简单,但数字排列方式却千变万化,所以不少人认为数独是训练头脑的绝佳方式。

最开始接触数独,是做那些报纸上刊登的题目,但做几道题就烦了,因为要不断地涂改、试错等,和纸面上做题相比,我更喜欢在手机上玩数独,主要是看的比较清楚,操作也简单,注意力可以完全集中在解题本身的逻辑,而不需要被其他的事情(比如找数字、涂改)打扰,作为一种总结,这里试图给出一些非常典型的数独思路,帮助自己发现规律,也说不定可以帮助您数独进阶。。

数独题目难度

很多人认为数独题目的难度取决于初盘已填入谜题中的数字的多少(所谓初盘,是指在给定的数独题得最开始的形态,通常一道数独题得初盘都有大概20几个数字已经给定,按照百度百科的说法,最少的初盘也应该有17个数字,只有这样才有有效的解答。),其实这并不尽然。也许看起来初盘填入的数字越多,题目就越容易求解。然而实际上,有很多填入数字多的题目比填入数字少的题目要难得多。这就需要有其他的方法来确定的难度。

在应用中使用得比较多的一种方法是看看要解决一道数独题目需要用到哪些数独技巧。极简单的题目用到的可能只是最基本的技巧。而相对复杂的题目可能要用到十分高深的解题方法。通过这样来设定游戏的难度相对而言较为客观。

当您玩过几盘数独后,您就知道这个论断是非常明显的,

数独解题技巧

数独游戏的解法,通常认为有"直观法(Direct Elimination Techniques)" 和 "候选数法(Candidates Elimination Techniques)"两种

直观法,顾名思义,就是通过对谜题中现有的数字进行分析,依据数独的规则,继而逐一确定剩余空格中的数字的方法。它是最常用并且相对简单的方法,对于比较容易的谜题,可以快速求解并收到良好的效果。但是遇到比较复杂的题目,直观法就稍显力不从心了。

候选数法, 是先在所有空白的单元格中写上所有可能出现的数字,然后通过一些常用的算法来删减候选数,最终获得唯一确定的候选数。候选数法被广泛使用在电脑生成谜题及解题的实践中,这不仅因为它编程相对容易,而且它的算法也在不断增加,使它的解题效率和能力都得以大力提高。

个人意见,直观法才是真正的数独解题方法,对大多数人的智力而言,依靠候选数来解题其做法基本和暴力破解密码一样,无趣而又庞杂,适合电脑程序去做,而不是依赖人的智慧。。我知道有高手推崇候选数法,认为候选数法也有很多乐趣与逻辑推理隐藏其中,不敢苟同。。

直观法

常见的数独谜题,一般就算再难都可以用直观法来解决。它不需要象候选数法那样在每个空白的单元格中用铅笔填上一大堆候选数。你只要有相对锐利的眼光和一定的逻辑分析能力,就可以准确地把空余的数字逐个填出来。实际上,直观法就是对数独游戏规则的充分利用。想体会解决数独谜题的乐趣,直观法是不二之选。在直观法中,常用的算法包括:

最基本的同数直观法

针对简单的数独题,对每一个数字,按照已经给出的相同数字的位置,直接发现并确定这个数字在另外的行、列、宫的位置,通过1~9数字的轮循,当已经确定的数字越来越多的时候,反复轮循,剩下的就更容易解决了。。

直观解题主要靠行、列、宫交叉定位,文字说不清楚,看图示给的三个非常简单的例子就很容易明白,这些例子都试图寻找“1”在右下角那个宫的位置,其中黑色数字是已经给定的数字,黑色的X表示任何其他数字已经占据了该单元,而绿色数字表示依照这些条件可以确定的数字。

sudoku_solution_1

这个直观法是基本的方法,当我们用高级技术得到某些数字的答案后,也常常进一步使用直观法扩大战果。

就差2个数字啦

有时候,发现一行、一列、或者一个宫里面就差2个数字啦,如果单看这一行,这一列,或这一个宫,这两个数字还无法确定最终的位置,这个时候往往需要依照相关行、列的信息找到答案。这里是两个小例子,某一行(宫)里面就差A、B两个数字啦,由于其中一个位置所在的列有A的存在,所以,那个位置不能是A,只能是B,这样这两个空白的A、B得到很好的确定。

稍微复杂一点,注意最右边的那个例子,虽然中间这一整列还有四个数字ABCD没有确认在哪4个空格里,但因为下面中间的宫里有AB的存在,所以我们可以推断AB在上面的空格,CD在下面的空格里面,这也是类似的思路:

sudoku_solution_2

使用非确定线索

有时候,虽然数字没有完全最终确定,但已知的线索一样可以拿来用,请思考下面3个数独题的绿色?该如何确定呢。

sudoku_solution_3

行或列的排除法

请思考第一题中的绿色8是如何确定的,然后思考第二题绿色的?又该是什么数字呢?

sudoku_solution_4

第一题,考察这一行,从左到右一共有4个空位,但前两个空位因为这个宫里已经有8了,所以不能再有8,那么首先排除了,最后一个空位因为最右这列已经有8了,所以也被排除了,那么只能是第三个空位,也就是绿色8所在位置了。

第二题,这一行的5还没有填,考察这一行的三个空位,很显然左右的空格因为所在列都已经有了5,不能填5了,那么5就只能填在中间这个打“?”的空位了。。