数独(SuDoku)介绍数独是一种源自18世纪末的瑞士,后在美国发展、并在日本得以发扬光大的数学智力拼图游戏。拼图是九宫格(即3格宽×3格高)的正方形状,每一格又细分为一个九宫格。在每一个小九宫格中,分别填上1至9的数字,让整个大九宫格每一列、每一行的数字都不重复。数独的玩法逻辑简单,数字排列方式千变万化。不少教育者认为数独是锻炼脑筋的好方法。历史如今数独的雏型首先于1970年代由美国的一家数学逻辑游戏杂志发表,当时名为NumberPlace。现今流行的数独于1984年由日本游戏杂志《パズル通信ニコリ》发表并得了现时的名称。数独本是“独立的数字”的省略,因为每一个方格都填上一个个位数。数独冲出日本成为英国当下的流行游戏,多得曾任香港高等法院法官的高乐德(WayneGould)。2004年,他在日本旅行的时候,发现杂志的这款游戏,便带回伦敦向《泰晤士报》推介并获得接纳。英国《每日邮报》也于三日后开始连载,使数独在英国正式掀起热潮。其他国家和地区受其影响也开始连载数独。数独术语要理解如何对一个数独题求解,我们先来介绍一些在本网站中使用的术语。单元格和值一个数独谜题通常包含有9x9=81个单元格,每个单元格仅能填写一个值。对一个未完成的数独题,有些单元格中已经填入了值,另外的单元格则为空,等待解题者来完成。行和列习惯上,横为行,纵为列,在这里也不例外。行由横向的9个单元格组成,而列由纵向的9个单元格组成。很明显,整个谜题由9行和9列组成。为了避免混淆,这里用大写英文字母和数字分别表示行和列。例如,单元格[G6]指的是行G和第6列交界处的单元格,它已填入了值7。区块术语区块指的是起始于特定位置的9个相邻的单元格组。在上图中,区块用交替相间的背景颜色来注明。例如,对于最左上角的区块,我们表示为起始于[A1]的区块。单元任何一行,一列或一个区块都是一个单元。每个单元都必须包含全部但不重复的数字1到9。数独题目难度很多人认为数独题目的难度取决于已填入谜题中的数字的数量,其实这并不尽然。一般来说,填入的数字越多,题目就越容易求解。然而实际上,有很多填入数字多的题目比填入数字少的题目要难得多。这就需要有其他的方法来确定的难度。在应用中使用得比较多的一种方法是看看要解决一道数独题目需要用到哪些数独技巧。极简单的题目用到的可能只是最基本的技巧。而相对复杂的题目可能要用到十分高深的解题方法。通过这样来设定游戏的难度相对而言较为客观。数独的变化人们总是不满足于已有的一切。同样,对于普遍使用的9x9谜题而言,大量涌现的变形数独题也在不断丰富着数独家族。一种比较常见的数独变形是大小上的改变。现在已有的大小包括:4x4,6x6,12x12,16x16,25x25,甚至还有100x100。另一种数独变形题是在原数独规则的基础上加入其他的规则。譬如X形数独就要求除原来的数独规则外,连主对角线上的单元格也要满足数字1到9的唯一性和完整性。而杀手数独则要求每个“区”(虚线环绕的一组单元格)中的值必须唯一且总和等于区的右上角所指定的数字。数独快速入门上篇:范例一:在左边第一个九宫格里,哪格可以放数字1,先看到再第一列和第二列里已经有了数字1,所以很明显了,除了棕色格子之外,上面两列格子已经不能放1了。范例二:换个进阶范例来看看,已知第一列和第二列不能放1,但仅就第三列而言,2的旁边似乎都可以放1的样子,但再看看被颜色标示的第三行,看到第三行有1之后,就知道棕色格子应该放1。范例三:来个更进阶点的,想想左上角第一个九宫格里,哪一格可以放1,再看先看看前两列,应该不能放1,看被颜色标示的第二行与第三行,又是不能放1,很显然的,就只有棕色格子能放1。范例四:再看看这个重要范例,想想左上角第一个九宫格里,哪格可以放1,先看看被颜色标示的第二列,再看看被颜色标示的第二行,经过分析后可知1要放在这棕色格子。范例五:换个轻松点的范例,看看第一列,数字有哪些,显而易见的就是缺1。中篇范例一:看看这个比上篇难的,想想1能放在哪里呢,被颜色标示起来的第一列和第一行已经不能放1了,就左上角的九宫格而言,在红色标示区域似乎是可以摆1的,但在这里而言,似乎无法决定1放在两格红色区域的哪一格,所以,可以先看看邻近的九宫格,发现到棕色格子能放1喔,这时候就不用怀疑马上写下1。范例二:看看这个有技术性的,想想1能放在哪里,看到黄色的第一列已经有1,所以不能再放1了,就中央的九宫格而言,合理的推论,1一定是在第二列中央红色三格的其中之一了,既然知道第二列的情况,再考虑黄色区域后,那么可以先确定右方九宫格的1必然放在这棕色格子。范例三:由上篇的概念再进阶,考虑这上面三个九宫格,看看能否决定1的位置,黄色标示的第三行已先被排除,就第一个九宫格而言,1一定在红色区域,就黄色标示区域来看,已不能再放1了,这时可以马上先决定右上九宫格里的棕色格子是能放1的啦。范例四:看到这左上方九宫格的第一列,就可以马上知道缺了哪两个数字,是不是已经看出红色格子不是1就是9了,但是又看到第二行有1,所以很轻松知道左上棕色格子一定是1,接下来9就确定在红色格子了。范例五:先看看这第一列,左上方的九宫格里,第一列绝对有1、8、9,再考虑到第一行黄色区域,看到有8和9,这下就可确定1绝对放在左上角的棕色格子。下篇范例一:来看看这个高级进阶例子,可以先把眼光放在第一列和第一行,看到在黄色区域里都有2和3,所以此黄色区域已经不能再放2和3了,这时可以考虑到左上九宫格里的红色格子能放2和3,再看到第一列和第三列的黄色区域,这黄色区域里已经不能放1,在左上九宫格里,能放1的只有红色与棕色格子,但红色格子将会被2和3所占据,所以能确定棕色格子必然为1。范例二:看看左上方九宫格里,能否由些微线索决定1的位置,首先,看到第一列后先排除5、6、7,又因左上方九宫格里有2、3、4,再排除这三个数字,这下,在左上方九宫格的第一列,只剩下1、8、9可以填,然后,又看到第一行有8和9,所以,棕色格子必然不会是8和9,那么,就只剩下1可以填入啦!下面介绍数独的技巧:对于数独游戏的解法,通常采用直观法(DirectEliminationTechniques)和候选数法(CandidatesEliminationTechniques).直观法(DirectEliminationTechniques),顾名思义,就是通过对谜题中现有的数字进行分析,继而逐一确定剩余空格中的数字的方法。它是最常用并且相对简单的方法,对于比较容易的谜题,可以快速求解并收到良好的效果。但是遇到比较复杂的题目,直观法(DirectEliminationTechniques)就稍显力不从心了。候选数法(CandidatesEliminationTechniques),是先在所有空白的单元格中写上所有可能出现的数字,然后通过一些常用的算法来删减候选数,最终获得唯一确定的候选数。候选数法(CandidatesEliminationTechniques)被广泛使用在电脑生成谜题及解题的实践中,这不仅因为它编程相对容易,而且它的算法也在不断增加,使它的解题效率和能力都得以大力提高。直观法(DirectEliminationTechniques)经常在报章杂志上看到的数独谜题,一般就算再难都可以用直观法来解决。它不需要象候选数法(CandidatesEliminationTechniques)那样在每个空白的单元格中用铅笔填上一大堆候选数。你只要有相对锐利的眼光和一定的逻辑分析能力,就可以准确地把空余的数字逐个填出来。实际上,直观法就是对数独游戏规则的充分利用。虽然它并不如候选数法(CandidatesEliminationTechniques)那样强大,但通常要想体会解决数独谜题的乐趣,使用直观法却是不二之选。直观法(DirectEliminationTechniques)具有以下的特点:1.轻松上手。即便是数独新手,在拿到谜题的一刹那,就可以用直观法来解题了。2.无需辅助。在纸上解题时一般只需要一支钢笔就可以。因为是通过推理和逻辑分析来确定哪个格填哪个数,或是哪个数填在哪个格里,所以基本不需要猜测。3.容易掌握。对于直观法(DirectEliminationTechniques)中应用的各种算法,可以很快掌握并应用于实际中。4.相对简单。比起候选数法(CandidatesEliminationTechniques),它的算法相对比较简单,当然能解决的谜题的复杂度也相对要低。在直观法(DirectEliminationTechniques)中,常用的算法包括:1.单元唯一法(SolePositionTechnique)2.单元排除法(BasicEliminationTechnique)3.区块排除法(BlockEliminationTechnique)4.唯一余数法(SoleNumberTechnique)5.组合排除法(CombinationEliminationTechnique)6.矩形排除法(RectangleEliminationTechnique)下面先介绍直观法的几种算法:单元唯一法(SolePositionTechnique)这应该算是直观法中最简单的方法了。基本上只需要看谜题,推理分析一概都用不上,这是因为要使用它所需满足的条件十分明显。同样,也正是因为它简单,所以只能处理很简单的谜题,或是在处理较复杂谜题的后期才用得上。我们先来看一个例子:在上图中,观察行B,可以看到除了[B3]外,其他所有的单元格中都已有了数字,根据数独游戏的规则,即每行,列或区块中不能有重复的数字,则[B3]中能填入的数字只能是行B中所未出现过的,也就是数字3。所以可以毫不犹豫地在[B3]中填入3。这就是单元唯一法在行中的应用。这里的单元(Unit,orgroup),指的是行,列或区块。所以有三种情况:1.当某行有8个单元格中已有数字,或2.当某列有8个单元格中已有数字,或3.当某区块有8个单元格中已有数字。无论是哪种情况,我们都可以很快地在该行,列或区块剩余的空格中填入该单元还未出现过的数字。下面是单元唯一法在列中的应用:在第7列中,只有[F7]未填入数字,且这一列中数字8还未出现过。所以[F7]=8。在区块中也是一样:在起始于[D7]的区块中,只有[E7]还未填入数字,且这个区块中数字5还未出现过,所以可以马上在[E7]中填入5。单元唯一法在解题初期应用的几率并不高,而在解题后期,随着越来越多的单元格填上了数字,使得应用这一方法的条件也逐渐得以满足。单元排除法(BasicEliminationTechnique)单元排除法是直观法中最常用的方法,也是在平常解决数独谜题时使用最频繁的方法。使用得当的话,甚至可以单独处理中等难度的谜题。使用单元排除法的目的就是要在某一单元(即行,列或区块)中找到能填入某一数字的唯一位置,换句话说,就是把单元中其他的空白位置都排除掉。它对应于候选数法中的隐式唯一法。那么要如何排除其余的空格呢?当然还是不能忘了游戏规则,即行,列或区块中不能有重复的数字。从另一个角度来理解,就是1.如果某行中已经有了某一数字,则该行中的其他位置不可能再出现这一数字。2.如果某列中已经有了某一数字,则该列中的其他位置不可能再出现这一数字。3.如果某区块中已经有了某一数字,则该区块中的其他位置不可能再出现这一数字。单纯理解上面的规则还是不足以解题,但是在实践中这些规则却可以交叉使用。在实际解题过程中,应用最多也最方便的是对区块的单元排除法,我们可以先看下面这个例子:对于起始于[D1]的区块,其未填数字的空格有6个之多,如果不使用单元排除法,是很难为这一区块填入任何数字的。这时我们就可以利用行,列及区块的相互关系,即一个单元格既在某一行上,也同时在某一列上以及某一区块中的这种关系来解题。观察数字9在谜题中的位置,可以看到它出现在[B2],[A4],[C7],[D8],[I1]和[H9]。而这些位置中,只有[B2],[D8]和[I1]与起始于[D1]的区块有关联。因为[I1]=9,它所在