2段数独(九宫格数独解法)怎么做?

如何玩九宫格数独游戏 | 快乐数独小组 | 果壳网 科技有意思
7946人加入此小组
刚刚接触九宫格数独游戏,想请教一下该怎么玩。在百度上搜索如何玩看不懂呐。。。。。。。。
+ 加入我的果篮
这里的一些技巧贴看过吗?能看懂吗?
不懂......
的话:不懂......标准数独的要求是每“行”、“列”、“宫”(即粗线围成的3*3区域)都有是不重复的1—9。最基本的方法是5月25日 数独技巧之宫内排除法(最基础的解法)中第一个图的表示的是:A2(第一行、第2列)是1,1后的直线表示这些位置不能再有1;B5是1,B5后的直线不能再有1;第三宫中,第一、二行被二条直线排除了,第三行中有二格被2、3占据了,只有灰色位置可以是1。
什么是第三宫?还有那个如果把2,3 变为3,4后,灰色的位置也可以为1?
什么是第三宫?还有那个如果把2,3 变为3,4后,灰色的位置也可以为1?“如果把2,3 变为3,4后”位置被占用了(是什么无关)当然不能再填1了,一个宫中必须的一个1,1只能填灰色区了!
的话:“如果把2,3 变为3,4后”位置被占用了(是什么无关)当然不能再填1了,一个宫中必须的一个1,1只能填灰色区了!亲,好深奥啊!!!那个绿色和黄色是什么意思。还有,怎么知道那个灰色在哪里?填数字的原则是什么,是横竖斜线上的数字加起来等于9
的话:亲,好深奥啊!!!那个绿色和黄色是什么意思。还有,怎么知道那个灰色在哪里?填数字的原则是什么,是横竖斜线上的数字加起来等于9不深奥!绿色和黄色是为了使你把“宫”看得更明白灰色在哪里?一宫一宫找。这里有解题实例:
的话:不深奥!绿色和黄色是为了使你把“宫”看得更明白灰色在哪里?一宫一宫找。这里有解题实例:《有想学数独初级解题技巧的朋友吗?》谢谢亲O(∩_∩)O
(C)2016果壳网&&&&&京ICP备号-2&&&&&其他类别:
莱昂哈德·保罗·欧拉
玩家人数:
数独分类中的词条太少了。希望更多的数独爱好者能完善!!
起源既然“数独”有一个字是“数”,人们也往往会联想到数学,那就不妨从大家都知道的数学家欧拉说起,但凡想了解数独历史的玩家在网络、书籍中搜索时,共同会提到的就是欧拉的“拉丁方块(Latin square)”,如下图:拉丁方块的规则:每一行(Row)、每一列(Column)均含1-N(N即盘面的规格),不重复。这与前面提到的标准数独非常相似,但少了一个宫的规则。近代发展数独起源于18世纪初瑞士数学家欧拉等人研究的拉丁方阵(Latin Square)。19世纪80年代,一位美国的退休建筑师格昂斯(Howard Garns)根据这种拉丁方阵发明了一种填数趣味游戏,这就是数独的雏形。20世纪70年代,人们在美国纽约的一本益智杂志《Math Puzzles and Logic Problems》上发现了这个游戏,当时被称为填数字(Number Place),这也是目前公认的数独最早的见报版本。1984年一位日本学者将其介绍到了日本,发表在Nikoli公司的一本游戏杂志《パズル通信ニコリ》上,当时起名为“Suuji wa dokushin ni kagiru”,后来觉得这个名字太长,就改名为“sudoku”,其中“su”是数字的意思,“doku”是单一的意思。这个名字也是国际上对数独的比较通用的叫法。后来一位前任香港高等法院的新西兰籍法官高乐德(Wayne Gould)在1997年3月到日本东京旅游时,无意中发现了。他首先在英国的《泰晤士报》上发表,不久其他报纸也发表,很快便风靡全英国,之后他用了6年时间编写了电脑程式,并将它放在网站上(这个网站也就是著名的数独玩家论坛),后来因一些原因,网站被关闭,幸好数独大师Glenn Fowler恢复了数据,玩家论坛有了新处所。在90年代国内就有部分的益智类书籍开始刊登,南海出版社在2005年出版了《数独1-2》,随后日本著名数独制题人西尾彻也的《数独挑战》也由辽宁教育出版社出版。《北京晚报》、《扬子晚报》、《羊城晚报》、《新民晚报》、《成都商报》等等报纸媒体也先后刊登了数独游戏。
方格水平方向有九横行,垂直方向有九纵列的矩形,画分八十一个小正方形,称为九宫格(Grid),如图一所示,是数独(Sudoku)的作用范围。数独元素 - 九宫格行水平方向的每一横行有九格,每一横行称为行(Row),如图二所示。数独元素 - 单元列垂直方向的每一纵列有九格,每一纵列称为列(Column),如图三所示。数独元素 - 列宫三行与三列相交之处有九格,每一单元称为小九宫(Box、Block),简称宫,如图四所示(在杀手数独中,宫往往用单词Nonet表示)。数独元素 - 宫单元上述行、列、宫统称为单元(Unit)。区块由三个连续宫组成大区块(Chute),分大行区块(Floor)及大列区块(Tower)。第一大行区块:由第一宫、第二宫、第三宫组成。第二大行区块:由第四宫、第五宫、第六宫组成。第三大行区块:由第七宫、第八宫、第九宫组成。第一大列区块:由第一宫、第四宫、第七宫组成。第二大列区块:由第二宫、第五宫、第八宫组成。第三大列区块:由第三宫、第六宫、第九宫组成。格位编号格位按所处的行列单元赋予坐标值,如图五所示。数独元素 - 格位坐标有多种标示法,有横行 A~I,纵列 1~9(如中国),也有横行 1~9,纵列 A~I(如日本),这两种标示容易混淆,故最被广泛使用的是横行R1~R9,纵列C1~C9的标示法。提示数在九宫格的格位填上一些数字,做为填数判断的线索(Hint),称为提示数(Clue),如图六所示。数独元素 - 提示数
基本解题方法
解题的本质有二:隐性唯一解(Hidden Single)及显性唯一解(Naked Single),他们的名称是在候选数法的基础上命名的。解题必须以逻辑为依归,猜测的方法被称为“暴力型”解法(Brute Force),这不是提倡数独的本意。根据解题本质发展出来的基本解题方法有二种:摒除法摒除法:用数字去找单元内唯一可填空格,称为摒除法,数字可填唯一空格称为摒余解(隐性唯一解)。根据不同的作用范围,摒余解可分为下述三种:数字可填唯一空格在「宫」单元称为宫摒余解(Hidden Single in Box),这种解法称宫摒除法。数字可填唯一空格在「行」单元称为行摒余解(Hidden Single in Row),这种解法称行摒除法。数字可填唯一空格在「列」单元称为列摒余解(Hidden Single in Column),这种解法称列摒除法。行摒余解和列摒余解合称行列摒余解(Hidden Single in Line)。得到行列摒余解的方法称为行列摒除法。余数法Peer等位群格位余数法:用格位去找唯一可填数字,称为余数法,格位唯一可填数字称为唯余解(Naked Single)。余数法是删减等位群格位(Peer)已出现的数字的方法,每一格位的等位群格位有 20 个,如图七所示。依解题填制的过程可区分为直观法与候选数法:直观法直观法就是不做任何记号,直接从数独的盘势观察线索,推论答案的方法。候选数法候选数法就是删减等位群格位已出现的数字,将剩余可填数字填入空格做为解题线索的参考,可填数字称为候选数(Candidates,或称备选数)。直观法和候选数法只是填制时候是否有注记的区别,依照个人习惯而定,并非鉴定题目难度或技巧难度的标准,无论是难题或是简单题都可上述方法填制,一般程序解题以候选数法较多。
进阶解题方法
上述方法称为基础解法(Basic Techniques),其他所有的解法称为进阶解法(Advanced Techniques),是在补基本解法之不足,所以又称辅助解法。进阶解法包括:区块摒除法(Locked Candidates)、数组法(Subset)、四角对角线(X-Wing)、唯一矩形(Unique Rectangle)、全双值坟墓(Bivalue Universal Grave)、单数链(X-Chain)、异数链(XY-Chain)及其他数链的高级技巧等等。已发展出来的方法有近百种之多。其中前两种加上基础解法为一般数独书中介绍并使用的方法,同时也是大部分人可以理解并掌握的数独解题技法。通过基础解法出数只需一种解法,摒除法或唯余法,超出此范围而需要施加进阶解法时,解题点需要进阶解法协助基础解法来满足隐性唯一或显性唯一才能出数,该解题点的解法需要多个步骤协力完成,因此称做组合解法。相对概率相对概率不是真实的概率,而是用于同一格中的几个数字之间相互比较出现的可能。相对概率 = 九宫格出现的概率 × 行出现的概率 × 列出现的概率九宫格出现的概率:如果九宫格中有2个格可能出现1,目标格可能的数字为1、2、3,另一个格可能出现的数字为1、4,那么:目标格中的1在九宫格出现的概率 = 目标格中出现1的概率 × (1 - 另一个格中出现1的概率),得1/3 × (1-1/2) = 1/6。注意:1-1/2表示另一个格不出现1的概率,1/3 × (1-1/2) 的意思就是在另一个格不出现1的情况下,目标格出现1的概率。如果九宫格中有三个格可能出现1,目标格可能的数字为1、5、6,另一个格可能出现的数字为1、7,还有一个格可能出现的数字为1、8、9,得1/3 × (1-1/2) × (1-1/3) = 1/9。依此类推。行出现的概率和列出现的概率与九宫格出现的概率的算法原理相同。最后,把三个概率相乘,得到相对概率,把目标格中3个数字的相对概率进行对比,相对概率越大,出现的可能性越大。区块摒除法区块摒除法包括宫区块摒除法(Pointing)与行列区块摒除法(Claiming)。在基础题里,利用区块摒除可以替代一些基础解法的观察,或辅助基础解法寻找焦点。在非基础题里,区块可以隐藏任何其他结构,简单的可以把基础解法隐藏起来,难的可以隐藏数对等等其他进阶技巧。例如:区块摒除法首先数字6对第五宫摒除,得到第五宫的6在R4C5或者R6C5。不论是在R4C5或者R6C5,C5的其他格都不能再有数字6。(R4C5与R6C5就是数字6的区块,这也是区块摒除作用的观点)数字6对第二宫摒除,得解R1C4=6。
影响数独难度的因素很多,就题目本身而言,包括最高难度的技巧、各种技巧所用次数、是否有隐藏及隐藏的深度及广度的技巧组合、当前盘面可逻辑推导出的出数个数等等。对于玩家而言,了解的技巧数量、熟练程度、观察力自然也影响对一道题的难度判断。市面上数独刊物良莠不齐,在书籍、报纸、杂志中所列的难度或者大众解题时间纯属参考,常有难度错置的情况出现,所以不必特别在意。网络上有很多数独难度的分析软件,比较著名的是 Nicolas Juillerat 开发的 Sudoku Explainer 和 Bernhard Hobiger 开发的 Hodoku,它们都是免费的软件。因为每种软件的都有不同的解题策略,所以也只能作为难度的大致界定,无法真正的解析出难度的内涵。如果一道题目的提示数少,那么题目就会相对难,提示数多则会简单,这是一般人判断难易的思维模式,但数独谜题提示数的多寡与难易并无绝对关系,多提示数比少提示数难的情况屡见不鲜,同时也存在增加提示数之后题目反而变难的情形,即使是相同提示数(甚或相同谜题图形)也可以变化出各式各样的难度。提示数少对于出题的困难度则有比较直接的关系,以20-35提示数而言,每少一个提示数,其出题难度会增加数倍,在制作谜题时,提示数在22以下就非常困难,所以常见的数独题其提示数在23~30之间,其原因在于制作比较不困难,可以设计出比较漂亮的图形(Pattern),另外这个提示数范围的谜题变化多端是一个重要因素。
数独中的数字排列千变万化,那么究竟有多少种终盘的数字组合呢?6,670,903,752,021,072,936,960(约为6.67×10的21次方)种组合,2005年由Bertram Felgenhauer和Frazer Jarvis计算出该数字,并将计算方法发布在他们网站上,如果将等价终盘(如旋转、翻转、行行对换,数字对换等变形)不计算,则有5,472,730,538个组合。数独终盘的组合数量都如此惊人,那么数独题目数量就更加不计其数了,因为每个数独终盘又可以制作出无数道合格的数独题目。
目前(截止2011年)发现的最少提示数9×9标准数独为17个提示,截止日16:14,共发现了非等价17提示数谜题49151题,此数量仍在缓慢上升中,如果你先发现了17提示数的题目,可以上传至“17格数独验证”网站,当然你也可以在这里下载这49151题。关于是否有16提示数的合格题目,网络上也争论很久,有发现16提示数双解的,但是仍未发现唯一解。国外有网友给出了关于为什么至少需要17提示的证明,受到了大家的质疑,比如9×9对角线数独(在标准数独规则基础上,两条大对角线的数字不重复)的最小提示数为12,按照他的理论则需要更多的提示数。另外在2006年Gary McGuire撰写了程式,试图通过暴力法来证明16提示数的数独是否存在,方法很简单,既然Bertram Felgenhauer和Frazer Jarvis已经计算出不等价的终盘总数为5,472,730,538个,那么将每个终盘是16提示的情况都跑一遍,如果没有找到16提示的数独,那么就可以证明最少提示数为17个。但因为是暴力方法,对于一台单核的电脑来说需要跑30万年才能跑出结果。台湾的吴毅成教授和他的团队将Gary McGuire的程式加以改进,使得效率大幅提升,大约2417年即可完成演算。并放在BOINC(伯克利开放式网络计算平台)上让世界加入BOINC的电脑一同演算,令人欣喜的是,截至编辑日已经完成了51.73%。Gary McGuire的团队在2009年设计了新的算法,利用Deadly Pattern的思路,花费710万小时CPU时间后,于日提出了9×9标准数独不存在16提示唯一解的证明,继而说明最少需要17个提示数。并将他们的论文以及源代码更新在2009年的页面上。
数独到如今发展,出现了越来越多的变形(Variants),按照规则划分则成百上千,各国的数独爱好者也不断制作出新的变形。下面列出最常见的三种变形:对角线数独对角线数独(Diagonal Sudoku、Sudoku-X):在标准数独规则基础上,两条大对角线的数字不重复。对角线数独迷你数独迷你数独(Mini Sudoku):每个谜题都由一个在不同位置给与提示数字的4x4或6x6网格组成。游戏的目的是将空方格填上数字1到4(对于4x4大小的谜题)或者1到6(对于6x6的谜题),使得每一行,每一列以及每一个宫都没有重复的数字出现。Maga数独Maga数独(Maga Sudoku):每个谜题都由一个在不同位置给与提示数字的12x12或16x16的网格组成。游戏的目的是将空方格填上数字1到12(对于12x12的谜题)或者1到16(对于16x16的谜题),使得每一行,每一列以及每一个宫都没有重复的数字出现。锯齿数独锯齿数独(Jigsaw Sudoku):相对标准数独而言,宫变成了不规则的。玩家需在对应的锯齿方框内填入不重复的九个数或N个数,并保证横纵也不重复。连体数独连体数独(Multi Sudoku):每个谜题都由俩个或者更多的数独网格重叠组成,该网格可能是标准数独谜题也可能是混合类型的数独谜题,这些网格都有一个或多个宫重叠。游戏的目的是通过其规则将每个网格均解出。温馨提示,重叠的区域必须同时满足其所在网格的规则。Killer数独杀手数独(Killer Sudoku、Sum Sudoku):在标准数独规则的基础上,每个虚线框左上角的数字表示虚线框内所有数字之和,每个虚线框内数字无重复。杀手数独同时这3种基本变型也作为其他变形数独的雏形慢慢延伸开来,比如对角线数独引发了额外区域等,锯齿数独打破了宫是方方正正的定式,杀手数独更是引发了更多计算类的数独。
挖洞法从有到无的出题方法。先生成一个终盘,然后挖去部分数字形成一道题目。填数法从有到无的出题方法。在一个空盘面上填上部分数字形成一道题目。值得一提的是,2007年日本NPGenerator软件的网站提出了一种边推理边出题的出题法,可以手工打造出漂亮图案的数独题目,有兴趣出题的可以试试。
谜题(Puzzle):排除文化差异对做题者的影响,只用数字和图形表示的逻辑推理游戏。数独是谜题中的一个成员,由于其规则简单、种类众多从而从众多谜题脱颖而出,成为大众熟知的数字谜题。不过除了数独以外,还有不少谜题也非常出色,也有众多的拥护者,而且与数独有千丝万缕的关系。数独爱好者同样不能错过这些优秀的逻辑推理游戏。下面简单介绍几类谜题:数和(Kakuro):与杀手数独很像的一类谜题,规则要求同行、同列(同一段)数字不能重复,且每段数字之和等于左边和上边的提示数字。数图(Nonograms/Griddlers):根据盘面周围的数字提示,把盘中涂成符合条件的图案,很像“十字绣”。数回(Slither Link):游戏由0,1,2,3四个数字组成。每一个数字,代表四周划线的数目,并在最后成为一个不间断、不分岔的回路。数墙(Nurikabe):数墙的世界,是一个非黑即白的二元世界;在游戏中,你要决定的是,哪些格子需要涂黑,哪一些应该留白。数连(Number Link):与数独一样,数连是一个简单明快的游戏。你只需要把属于相同数字的同伴,以线连接起来。不过,这个游戏看起来非常简单,实际上是很有深度的。算独(Kenken)游戏的目的是将数字1到N(N为网格的行列数)填满空格,使得每一行,每一列的数字不重复,并且每一个粗线框左上角代表了该粗线框内数字的运算法则以及计算结果。算数数独的粗线框内,相同数字可能使用不止一次。
数独计算器
数独计算器是一个特殊的数独解答工具,它试图提供人性化的数独解题方法,完全模拟人脑的思维过程解题,并且能一步一步的讲解每步的理由。在你对数独难题一筹莫展的时候,该数独软件将为了提供帮助, 数独计算器是一个特殊的数独工具。我们希望数独计算器成为很好的使用逻辑方法解数独的工具,大家可以从数独助手的运行过程掌握更好的解数独题技巧,作为数独技巧教学的工具。数独计算器可以进行一步一步计算、指定步数计算、一次性计算,对于每一步计算给出详细的说明。对于有多个解的数独题目,会给出提示,并可人工干预。对每一步计算生成步骤列表,可以回到任意步骤进行研究。
世界数独锦标赛:由世界智力谜题联合会组织的国际性最高水准数独赛事,该赛事每年举办一次,由不同的会员国轮流申请举办。首届于2006年在意大利的卢卡举办,第八届于2013年在北京举办。每年由世智联在各国的唯一授权组织选拔国家队参加。北京国际数独大奖赛:由北京广播电视台主办的一项国际数独赛事,该赛事奖金较高,也吸引了国际上众多高手踊跃参与,给国内高手提供了一个可以与国外高手同场竞技的平台。首届于2011年举办,第二届于2012年5月举办,目前国内参赛的选手均为以往进入过数独国家队或在国内选拔赛中名列前茅者。中国数独锦标赛:由国内的世智联授权组织每年举办一次,目的是选拔出当年的数独高手组队参加一年一度的世界数独锦标赛。该比赛不设置门槛,无论新人还是老手均可参加。具体的时间和地点请关注官方的数独选拔赛通知。经过两天紧张激烈的比赛,各项桂冠终有归属。中国队获得团体赛冠军,捷克、日本分获亚军、季军;中国队的三位中学生选手金策、孙彻然、邱言哲获18岁及18岁以下年龄组前三名;中国队梁跃获得50岁及50岁以上年龄组亚军,丹麦队和意大利队选手分获冠军和季军;金策还夺得个人赛冠军,日本的森西亨泰、捷克的雅库布分获亚军、季军。据了解,随着数独这项智力运动在中国的不断普及,越来越多的青少年成为数独爱好者。此次中国数独代表队不仅是比赛中最年轻的国家队之一,年仅15岁的邱言哲也成为年龄最小的A队队长。别看他还是一名在校初中生,却有着丰富的比赛经验,年他曾是世界数独锦标赛中国队选手,2013获得中国数独锦标赛第四名。获得18岁及18岁以下年龄组、个人赛及团体赛三项冠军的中学生金策,可谓本届数独世锦赛的一匹黑马。来自浙江的他已与数独结缘4年,当一些同龄人沉溺于网络游戏时,他却利用网络寻找与他志同道合的数独伙伴。瘦高的个子,不善言语的他,虽然在陌生人面前有些羞涩,但却通过一个个小小的九宫格展现自信与智慧。本届数独世锦赛决赛以电视直播的方式,在北京电视台新闻频道同步播出,这在世界上尚属首次。在没有任何经验可循的情况下,为保证不影响赛事进行,同时又能实时展现选手比赛进程,组委会设计了多套直播方案,多次推敲并到场演练,以演播室讲解加决赛现场的方式,清晰简练地为电视观众讲解数独题目。
显示方式: |
离散数学分类树
共有19个词条
万方数据期刊论文
数学的实践与认识
万方数据期刊论文
数理统计与管理
万方数据期刊论文
计算机工程与设计
为本词条添加和相关影像
互动百科的词条(含所附图片)系由网友上传,如果涉嫌侵权,请与客服联系,我们将按照法律之相关规定及时进行处理。未经许可,禁止商业网站等复制、抓取本站内容;合理使用者,请注明来源于。
登录后使用互动百科的服务,将会得到个性化的提示和帮助,还有机会和专业认证智愿者沟通。
您也可以使用以下网站账号登录:
此词条还可添加&
编辑次数:109次
参与编辑人数:29位
最近更新时间: 15:06:56
贡献光荣榜请教一下那些数独(一般的那种九宫格)程序是怎么写出来的?
[问题点数:20分,结帖人bigwhitebunny]
请教一下那些数独(一般的那种九宫格)程序是怎么写出来的?
[问题点数:20分,结帖人bigwhitebunny]
不显示删除回复
显示所有回复
显示星级回复
显示得分回复
只显示楼主
2013年 总版技术专家分年内排行榜第一
2014年 总版技术专家分年内排行榜第三
匿名用户不能发表回复!|
每天回帖即可获得10分可用分!小技巧:
你还可以输入10000个字符
(Ctrl+Enter)
请遵守CSDN,不得违反国家法律法规。
转载文章请注明出自“CSDN(www.csdn.net)”。如是商业用途请联系原作者。数独游戏-九宫格
花了一天时间做的,高中时玩过的数独游戏,九宫格, 原创!!代码片段 1效果预览&!doctype html&
&html lang=&en& class=&&&
&meta charset=&utf-8&&
&title&&/title&
&!-- &script src=&js/jquery-1.11.0.min.js&&&/script& --&
&script src=&/jquery/1.11.1/jquery.min.js&&&/script&
table#rowcol {
border-collapse:
width: 270
margin: 20
background-color: #
#rowcol td {
height: 24
border: 1px solid #
text-align:
#rowcol tr:nth-child(3) td {
border-bottom: #000 solid 2
#rowcol tr:nth-child(6) td {
border-bottom: #000 solid 2
/* .bor-l0 {
border-left-color:#000;
#rowcol tr td:nth-child(3) {
border-right: #000 solid 2
#rowcol tr td:nth-child(6) {
border-right: #000 solid 2
#rowcol input {
height: 24
font-size: 18
line-height: 24
text-align:
#rowcol .to-fill {
background-color: #0
p.change {
width: 500
margin: 10
.change input {
padding: 10px 20
background-color: #f60;
border-radius: 5
text-align:
&h1 style=&width:500margin:auto&&数独游戏,九宫格,会玩的可以测试一下反应速度,不会玩的百度去吧!&/h1&
&!-- &p style=&line-height:28&&&span style=&color:#f60&&1408****9149&/span&
&a href='javascript:void();' class='sendmobile'&发送到手机&/a&
&input type=&text& onkeyup=&value=value.replace(/^0|[^0-9]/g,'')&&
&input type=&text& onkeyup=&console.log(event.keyCode)&& contenteditable--&
&table id=&rowcol&&
&input type=&text& maxlength=&1& value=&1&&
&input type=&text& maxlength=&1& value=&2&&
&td class=&bor-l0&&
&input type=&text& maxlength=&1& value=&3&&
&input type=&text& maxlength=&1& value=&4&&
&input type=&text& maxlength=&1& value=&5&&
&td class=&bor-l0&&
&input type=&text& maxlength=&1& value=&6&&
&input type=&text& maxlength=&1& value=&7&&
&input type=&text& maxlength=&1& value=&8&&
&input type=&text& maxlength=&1& value=&9&&
&input type=&text& maxlength=&1& value=&4&&
&input type=&text& maxlength=&1& value=&5&&
&input type=&text& maxlength=&1& value=&6&&
&input type=&text& maxlength=&1& value=&7&&
&input type=&text& maxlength=&1& value=&8&&
&input type=&text& maxlength=&1& value=&9&&
&input type=&text& maxlength=&1& value=&1&&
&input type=&text& maxlength=&1& value=&2&&
&input type=&text& maxlength=&1& value=&3&&
&tr class=&bor-b0&&
&input type=&text& maxlength=&1& value=&7&&
&input type=&text& maxlength=&1& value=&8&&
&input type=&text& maxlength=&1& value=&9&&
&input type=&text& maxlength=&1& value=&1&&
&input type=&text& maxlength=&1& value=&2&&
&input type=&text& maxlength=&1& value=&3&&
&input type=&text& maxlength=&1& value=&4&&
&input type=&text& maxlength=&1& value=&5&&
&input type=&text& maxlength=&1& value=&6&&
&input type=&text& maxlength=&1& value=&2&&
&input type=&text& maxlength=&1& value=&3&&
&input type=&text& maxlength=&1& value=&4&&
&input type=&text& maxlength=&1& value=&5&&
&input type=&text& maxlength=&1& value=&6&&
&input type=&text& maxlength=&1& value=&7&&
&input type=&text& maxlength=&1& value=&8&&
&input type=&text& maxlength=&1& value=&9&&
&input type=&text& maxlength=&1& value=&1&&
&input type=&text& maxlength=&1& value=&5&&
&input type=&text& maxlength=&1& value=&6&&
&input type=&text& maxlength=&1& value=&7&&
&input type=&text& maxlength=&1& value=&8&&
&input type=&text& maxlength=&1& value=&9&&
&input type=&text& maxlength=&1& value=&1&&
&input type=&text& maxlength=&1& value=&2&&
&input type=&text& maxlength=&1& value=&3&&
&input type=&text& maxlength=&1& value=&4&&
&tr class=&bor-b0&&
&input type=&text& maxlength=&1& value=&8&&
&input type=&text& maxlength=&1& value=&9&&
&input type=&text& maxlength=&1& value=&1&&
&input type=&text& maxlength=&1& value=&2&&
&input type=&text& maxlength=&1& value=&3&&
&input type=&text& maxlength=&1& value=&4&&
&input type=&text& maxlength=&1& value=&5&&
&input type=&text& maxlength=&1& value=&6&&
&input type=&text& maxlength=&1& value=&7&&
&input type=&text& maxlength=&1& value=&3&&
&input type=&text& maxlength=&1& value=&4&&
&input type=&text& maxlength=&1& value=&5&&
&input type=&text& maxlength=&1& value=&6&&
&input type=&text& maxlength=&1& value=&7&&
&input type=&text& maxlength=&1& value=&8&&
&input type=&text& maxlength=&1& value=&9&&
&input type=&text& maxlength=&1& value=&1&&
&input type=&text& maxlength=&1& value=&2&&
&input type=&text& maxlength=&1& value=&6&&
&input type=&text& maxlength=&1& value=&7&&
&input type=&text& maxlength=&1& value=&8&&
&input type=&text& maxlength=&1& value=&9&&
&input type=&text& maxlength=&1& value=&1&&
&input type=&text& maxlength=&1& value=&2&&
&input type=&text& maxlength=&1& value=&3&&
&input type=&text& maxlength=&1& value=&4&&
&input type=&text& maxlength=&1& value=&5&&
&input type=&text& maxlength=&1& value=&9&&
&input type=&text& maxlength=&1& value=&1&&
&input type=&text& maxlength=&1& value=&2&&
&input type=&text& maxlength=&1& value=&3&&
&input type=&text& maxlength=&1& value=&4&&
&input type=&text& maxlength=&1& value=&5&&
&input type=&text& maxlength=&1& value=&6&&
&input type=&text& maxlength=&1& value=&7&&
&input type=&text& maxlength=&1& value=&8&&
&!-- &p class=&change&&
&input type=&text& name=&row1& id=&row1&&行:
&input type=&text& name=&row2& id=&row2&&
&button id=&changeRow&&交换&/button&(只能交换1-3,4-6,7-9内的行)&/p&
&p class=&change&&
&input type=&text& name=&col1& id=&col1&&列:
&input type=&text& name=&col2& id=&col2&&
&button id=&changeCol&&交换&/button&(只能交换1-3,4-6,7-9内的列)&/p& --&
&p class=&change&&
&input type=&text& name=&row1& id=&row1& value=&1&&
&button id=&rowUp&&上移&/button&
&button id=&rowDown&&下移&/button& (可用上下方向键移动)
&p class=&change&&
&input type=&text& name=&col1& id=&col1& value=&1&&
&button id=&colLeft&&左移&/button&
&button id=&colRight&&右移&/button& (可用左右方向键移动)
&p class=&change&&
&select name=&& id=&& class=&selLevel&&
&option value=&0&&请选择&/option&
&option value=&1&&容易&/option&
&option value=&2&&一般&/option&
&option value=&3&&中等&/option&
&option value=&4&&较难&/option&
&option value=&5&&很难&/option&
&button class=&fill1&&特殊矩形1&/button&
&button class=&fill2&&特殊矩形2&/button&
&button class=&fillX1&&X形1&/button&
&button class=&fillX2&&X形2&/button&
&p class=&tc change&&
&button id=&check&&检查结果&/button&
var tds = [1, 2, 3, 4, 5, 6, 7, 8, 9, 4, 5, 6, 7, 8, 9, 1, 2, 3, 7, 8, 9, 1, 2, 3, 4, 5, 6, 2, 3, 4, 5, 6, 7, 8, 9, 1, 5, 6, 7, 8, 9, 1, 2, 3, 4, 8, 9, 1, 2, 3, 4, 5, 6, 7, 3, 4, 5, 6, 7, 8, 9, 1, 2, 6, 7, 8, 9, 1, 2, 3, 4, 5, 9, 1, 2, 3, 4, 5, 6, 7, 8],
numArr = [];
$(function() {
(function shuffleRandom(n) {
var i = 0,
ran, rc, move,
for (; i & i++) {
ran = Math.random().toFixed(3),
rc = ran & 0.5 ? 1 : 0,
move = ran * 1000 % 2 == 1 ? 1 : 0,
rcval = Math.floor(Math.random() * 9) + 1;
shuffleRowCol(rc, rcval, move);
for (var i = 0; i & 81; i++) {
numArr[i] =
shuffleUseSort = function(aArr) {
return aArr.sort(function(a, b) {
return (0.5 - Math.random());
shuffleUseSort(numArr);
$(&#rowcol input&).each(function() {
tds.push(+this.value);
this.value = &&;
fillRect = function(arr) {
var emptyRect = function(arrs) {
var i = 0,
emptys = [0, 1, 2, 9, 10, 11, 18, 19, 20],
nRect = [0, 0, 3, 6, 27, 30, 33, 54, 57, 60],
totals = [];
if ($.isArray(arrs)) {
$.each(arrs, function() {
for (; i & arrs. i++) {
totals = totals.concat($.map(emptys, function(val) {
return nRect[arrs[i]] +
$(&#rowcol input&).each(function(i) {
$(this).removeClass(&to-fill&).val(tds[i]);
$.each(emptyRect(arr), function(i, val) {
$(&#rowcol input:eq(& + val + &)&).val(&&).attr(&class&, &to-fill&);
fillX = function(fill) {
var i, fillArr = [];
for (i = 0; i & 8; i++) {
fillArr.push(9 * i + i + 1);
fillArr.push(9 * i + 7 - i);
for (i = 1; i & 9; i++) {
fillArr.push(9 * i + i - 1);
fillArr.push(9 * i + 9 - i);
if (fill) {
$(&#rowcol input&).each(function(i) {
$(this).removeClass(&to-fill&).val(tds[i]);
$.each(fillArr, function(i, val) {
$(&#rowcol input:eq(& + val + &)&).val(&&).attr(&class&, &to-fill&);
$(&#rowcol input&).addClass(&to-fill&).val(&&);
$.each(fillArr.sort(function(a, b) {
return a - b
}), function(i, val) {
$(&#rowcol input:eq(& + val + &)&).val(tds[val]).removeClass(&to-fill&);
$(&.fill1&).on(&click&, function() {
fillRect([1, 3, 7, 9]);
$(&.fill2&).on(&click&, function() {
fillRect([2, 4, 6, 8]);
$(&.fillX1&).on(&click&, function() {
$(&.fillX2&).on(&click&, function() {
$(&#rowcol&).on(&keyup&, function(e) {
var index = $(e.target).index(&#rowcol input&),
if (e.keyCode == 38) {
if (index & 8) {
$(&#rowcol input&).eq(index - 9).focus();
$(&#rowcol input&).eq(index + 72).focus();
} else if (e.keyCode == 40) {
if (index & 71) {
$(&#rowcol input&).eq(index - 72).focus();
$(&#rowcol input&).eq(index + 9).focus();
} else if (e.keyCode & 48 && e.keyCode & 58) {
tar.value = e.keyCode - 48;
} else if (e.keyCode == 37) {
if (index % 9 & 0) {
$(&#rowcol input&).eq(index - 1).focus();
$(&#rowcol input&).eq(index + 8).focus();
} else if (e.keyCode == 39) {
if ((index + 1) % 9 == 0) {
$(&#rowcol input&).eq(index - 8).focus();
$(&#rowcol input&).eq(index + 1).focus();
tar.value = 1;
$(&.change input&).on(&keyup&, function(e) {
var rowval,
this.value = this.value.replace(/[^1-9]/, &&).replace(/\d(\d)/, &]&!doctype html&
&html lang=&en& class=&&&
&meta charset=&utf-8&&
&title&&/title&
&!-- &script src=&js/jquery-1.11.0.min.js&&&/script& --&
&script src=&/jquery/1.11.1/jquery.min.js&&&/script&
table#rowcol {
border-collapse:
width: 270
margin: 20
background-color: #
#rowcol td {
height: 24
border: 1px solid #
text-align:
#rowcol tr:nth-child(3) td {
border-bottom: #000 solid 2
#rowcol tr:nth-child(6) td {
border-bottom: #000 solid 2
/* .bor-l0 {
border-left-color:#000;
#rowcol tr td:nth-child(3) {
border-right: #000 solid 2
#rowcol tr td:nth-child(6) {
border-right: #000 solid 2
#rowcol input {
height: 24
font-size: 18
line-height: 24
text-align:
#rowcol .to-fill {
background-color: #0
p.change {
width: 500
margin: 10
.change input {
padding: 10px 20
background-color: #f60;
border-radius: 5
text-align:
&h1 style=&width:500margin:auto&&数独游戏,九宫格,会玩的可以测试一下反应速度,不会玩的百度去吧!&/h1&
&!-- &p style=&line-height:28&&&span style=&color:#f60&&1408****9149&/span&
&a href='javascript:void();' class='sendmobile'&发送到手机&/a&
&input type=&text& onkeyup=&value=value.replace(/^0|[^0-9]/g,'')&&
&input type=&text& onkeyup=&console.log(event.keyCode)&& contenteditable--&
&table id=&rowcol&&
&input type=&text& maxlength=&1& value=&1&&
&input type=&text& maxlength=&1& value=&2&&
&td class=&bor-l0&&
&input type=&text& maxlength=&1& value=&3&&
&input type=&text& maxlength=&1& value=&4&&
&input type=&text& maxlength=&1& value=&5&&
&td class=&bor-l0&&
&input type=&text& maxlength=&1& value=&6&&
&input type=&text& maxlength=&1& value=&7&&
&input type=&text& maxlength=&1& value=&8&&
&input type=&text& maxlength=&1& value=&9&&
&input type=&text& maxlength=&1& value=&4&&
&input type=&text& maxlength=&1& value=&5&&
&input type=&text& maxlength=&1& value=&6&&
&input type=&text& maxlength=&1& value=&7&&
&input type=&text& maxlength=&1& value=&8&&
&input type=&text& maxlength=&1& value=&9&&
&input type=&text& maxlength=&1& value=&1&&
&input type=&text& maxlength=&1& value=&2&&
&input type=&text& maxlength=&1& value=&3&&
&tr class=&bor-b0&&
&input type=&text& maxlength=&1& value=&7&&
&input type=&text& maxlength=&1& value=&8&&
&input type=&text& maxlength=&1& value=&9&&
&input type=&text& maxlength=&1& value=&1&&
&input type=&text& maxlength=&1& value=&2&&
&input type=&text& maxlength=&1& value=&3&&
&input type=&text& maxlength=&1& value=&4&&
&input type=&text& maxlength=&1& value=&5&&
&input type=&text& maxlength=&1& value=&6&&
&input type=&text& maxlength=&1& value=&2&&
&input type=&text& maxlength=&1& value=&3&&
&input type=&text& maxlength=&1& value=&4&&
&input type=&text& maxlength=&1& value=&5&&
&input type=&text& maxlength=&1& value=&6&&
&input type=&text& maxlength=&1& value=&7&&
&input type=&text& maxlength=&1& value=&8&&
&input type=&text& maxlength=&1& value=&9&&
&input type=&text& maxlength=&1& value=&1&&
&input type=&text& maxlength=&1& value=&5&&
&input type=&text& maxlength=&1& value=&6&&
&input type=&text& maxlength=&1& value=&7&&
&input type=&text& maxlength=&1& value=&8&&
&input type=&text& maxlength=&1& value=&9&&
&input type=&text& maxlength=&1& value=&1&&
&input type=&text& maxlength=&1& value=&2&&
&input type=&text& maxlength=&1& value=&3&&
&input type=&text& maxlength=&1& value=&4&&
&tr class=&bor-b0&&
&input type=&text& maxlength=&1& value=&8&&
&input type=&text& maxlength=&1& value=&9&&
&input type=&text& maxlength=&1& value=&1&&
&input type=&text& maxlength=&1& value=&2&&
&input type=&text& maxlength=&1& value=&3&&
&input type=&text& maxlength=&1& value=&4&&
&input type=&text& maxlength=&1& value=&5&&
&input type=&text& maxlength=&1& value=&6&&
&input type=&text& maxlength=&1& value=&7&&
&input type=&text& maxlength=&1& value=&3&&
&input type=&text& maxlength=&1& value=&4&&
&input type=&text& maxlength=&1& value=&5&&
&input type=&text& maxlength=&1& value=&6&&
&input type=&text& maxlength=&1& value=&7&&
&input type=&text& maxlength=&1& value=&8&&
&input type=&text& maxlength=&1& value=&9&&
&input type=&text& maxlength=&1& value=&1&&
&input type=&text& maxlength=&1& value=&2&&
&input type=&text& maxlength=&1& value=&6&&
&input type=&text& maxlength=&1& value=&7&&
&input type=&text& maxlength=&1& value=&8&&
&input type=&text& maxlength=&1& value=&9&&
&input type=&text& maxlength=&1& value=&1&&
&input type=&text& maxlength=&1& value=&2&&
&input type=&text& maxlength=&1& value=&3&&
&input type=&text& maxlength=&1& value=&4&&
&input type=&text& maxlength=&1& value=&5&&
&input type=&text& maxlength=&1& value=&9&&
&input type=&text& maxlength=&1& value=&1&&
&input type=&text& maxlength=&1& value=&2&&
&input type=&text& maxlength=&1& value=&3&&
&input type=&text& maxlength=&1& value=&4&&
&input type=&text& maxlength=&1& value=&5&&
&input type=&text& maxlength=&1& value=&6&&
&input type=&text& maxlength=&1& value=&7&&
&input type=&text& maxlength=&1& value=&8&&
&!-- &p class=&change&&
&input type=&text& name=&row1& id=&row1&&行:
&input type=&text& name=&row2& id=&row2&&
&button id=&changeRow&&交换&/button&(只能交换1-3,4-6,7-9内的行)&/p&
&p class=&change&&
&input type=&text& name=&col1& id=&col1&&列:
&input type=&text& name=&col2& id=&col2&&
&button id=&changeCol&&交换&/button&(只能交换1-3,4-6,7-9内的列)&/p& --&
&p class=&change&&
&input type=&text& name=&row1& id=&row1& value=&1&&
&button id=&rowUp&&上移&/button&
&button id=&rowDown&&下移&/button& (可用上下方向键移动)
&p class=&change&&
&input type=&text& name=&col1& id=&col1& value=&1&&
&button id=&colLeft&&左移&/button&
&button id=&colRight&&右移&/button& (可用左右方向键移动)
&p class=&change&&
&select name=&& id=&& class=&selLevel&&
&option value=&0&&请选择&/option&
&option value=&1&&容易&/option&
&option value=&2&&一般&/option&
&option value=&3&&中等&/option&
&option value=&4&&较难&/option&
&option value=&5&&很难&/option&
&button class=&fill1&&特殊矩形1&/button&
&button class=&fill2&&特殊矩形2&/button&
&button class=&fillX1&&X形1&/button&
&button class=&fillX2&&X形2&/button&
&p class=&tc change&&
&button id=&check&&检查结果&/button&
var tds = [1, 2, 3, 4, 5, 6, 7, 8, 9, 4, 5, 6, 7, 8, 9, 1, 2, 3, 7, 8, 9, 1, 2, 3, 4, 5, 6, 2, 3, 4, 5, 6, 7, 8, 9, 1, 5, 6, 7, 8, 9, 1, 2, 3, 4, 8, 9, 1, 2, 3, 4, 5, 6, 7, 3, 4, 5, 6, 7, 8, 9, 1, 2, 6, 7, 8, 9, 1, 2, 3, 4, 5, 9, 1, 2, 3, 4, 5, 6, 7, 8],
numArr = [];
$(function() {
(function shuffleRandom(n) {
var i = 0,
ran, rc, move,
for (; i & i++) {
ran = Math.random().toFixed(3),
rc = ran & 0.5 ? 1 : 0,
move = ran * 1000 % 2 == 1 ? 1 : 0,
rcval = Math.floor(Math.random() * 9) + 1;
shuffleRowCol(rc, rcval, move);
for (var i = 0; i & 81; i++) {
numArr[i] =
shuffleUseSort = function(aArr) {
return aArr.sort(function(a, b) {
return (0.5 - Math.random());
shuffleUseSort(numArr);
$(&#rowcol input&).each(function() {
tds.push(+this.value);
this.value = &&;
fillRect = function(arr) {
var emptyRect = function(arrs) {
var i = 0,
emptys = [0, 1, 2, 9, 10, 11, 18, 19, 20],
nRect = [0, 0, 3, 6, 27, 30, 33, 54, 57, 60],
totals = [];
if ($.isArray(arrs)) {
$.each(arrs, function() {
for (; i & arrs. i++) {
totals = totals.concat($.map(emptys, function(val) {
return nRect[arrs[i]] +
$(&#rowcol input&).each(function(i) {
$(this).removeClass(&to-fill&).val(tds[i]);
$.each(emptyRect(arr), function(i, val) {
$(&#rowcol input:eq(& + val + &)&).val(&&).attr(&class&, &to-fill&);
fillX = function(fill) {
var i, fillArr = [];
for (i = 0; i & 8; i++) {
fillArr.push(9 * i + i + 1);
fillArr.push(9 * i + 7 - i);
for (i = 1; i & 9; i++) {
fillArr.push(9 * i + i - 1);
fillArr.push(9 * i + 9 - i);
if (fill) {
$(&#rowcol input&).each(function(i) {
$(this).removeClass(&to-fill&).val(tds[i]);
$.each(fillArr, function(i, val) {
$(&#rowcol input:eq(& + val + &)&).val(&&).attr(&class&, &to-fill&);
$(&#rowcol input&).addClass(&to-fill&).val(&&);
$.each(fillArr.sort(function(a, b) {
return a - b
}), function(i, val) {
$(&#rowcol input:eq(& + val + &)&).val(tds[val]).removeClass(&to-fill&);
$(&.fill1&).on(&click&, function() {
fillRect([1, 3, 7, 9]);
$(&.fill2&).on(&click&, function() {
fillRect([2, 4, 6, 8]);
$(&.fillX1&).on(&click&, function() {
$(&.fillX2&).on(&click&, function() {
$(&#rowcol&).on(&keyup&, function(e) {
var index = $(e.target).index(&#rowcol input&),
if (e.keyCode == 38) {
if (index & 8) {
$(&#rowcol input&).eq(index - 9).focus();
$(&#rowcol input&).eq(index + 72).focus();
} else if (e.keyCode == 40) {
if (index & 71) {
$(&#rowcol input&).eq(index - 72).focus();
$(&#rowcol input&).eq(index + 9).focus();
} else if (e.keyCode & 48 && e.keyCode & 58) {
tar.value = e.keyCode - 48;
} else if (e.keyCode == 37) {
if (index % 9 & 0) {
$(&#rowcol input&).eq(index - 1).focus();
$(&#rowcol input&).eq(index + 8).focus();
} else if (e.keyCode == 39) {
if ((index + 1) % 9 == 0) {
$(&#rowcol input&).eq(index - 8).focus();
$(&#rowcol input&).eq(index + 1).focus();
tar.value = 1;
$(&.change input&).on(&keyup&, function(e) {
var rowval,
this.value = this.value.replace(/[^1-9]/, &&).replace(/\d(\d)/, &$1&);
rowval = $(&#row1&).val() ? +$(&#row1&).val() : 1,
colval = $(&#col1&).val() ? +$(&#col1&).val() : 1;
if (this.id == &row1&) {
if (e.keyCode == 38) {
shuffleRowCol(0, rowval, 0)
} else if (e.keyCode == 40) {
shuffleRowCol(0, rowval, 1)
if (e.keyCode == 37) {
shuffleRowCol(1, colval, 0)
} else if (e.keyCode == 39) {
shuffleRowCol(1, colval, 1)
$(&.change button&).on(&click&, function() {
var rowval1 = +$(&#row1&).val(),
colval1 = +$(&#col1&).val()
// chR = rowval1%3
// chRow = Math.ceil(rowval1/3)
// chC = colval1%3
// chCol = Math.ceil(colval1/3)
if (this.id == &rowUp&) {
shuffleRowCol(0, rowval1, 0)
} else if (this.id == &rowDown&) {
shuffleRowCol(0, rowval1, 1)
} else if (this.id == &colLeft&) {
shuffleRowCol(1, colval1, 0)
} else if (this.id == &colRight&) {
shuffleRowCol(1, colval1, 1)
$(&.selLevel&).change(function() {
var nu = +this.
$(&#rowcol input&).each(function(i) {
$(this).removeClass(&to-fill&).val(tds[i]);
if (nu != 0) {
for (i = 0; i & nu * 10 + 10; i++) {
$(&#rowcol input:eq(& + numArr[i] + &)&).val(&&).attr(&class&, &to-fill&);
$(&#check&).click(checkFill);
* [shuffleRowCol description]
{[num]}0 move row,1 move col
{[num]}1-9 move row or col
{[num]}0,1 0 move top or left, 1 move bottom or right
* @return {[num]}
function shuffleRowCol(rc, rcval, move) {
var chR = rcval % 3,
chRow = Math.ceil(rcval / 3) - 1,
tbl = $(&#rowcol&)[0],
tbody = $(&#rowcol tbody&)[0];
if (move) {
if (chR == 0) {
$(&#rowcol tr&).each(function() {
this.insertBefore(this.cells[rcval - 1], this.cells[chRow * 3]);
$(&#rowcol tr&).each(function() {
this.insertBefore(this.cells[rcval], this.cells[rcval - 1]);
//tbl.rows[rcval-1].insertBefore(tbl.rows[rcval-1].cells[rcval], tbl.rows[rcval-1].cells[rcval]);
if (chR == 1) {
$(&#rowcol tr&).each(function() {
$(this.cells[rcval - 1]).insertAfter(this.cells[chRow * 3 + 2])
//this.insertBefore(this.cells[rcval-1], this.cells[chRow*3 + 2]);
$(&#rowcol tr&).each(function() {
this.insertBefore(this.cells[rcval - 1], this.cells[rcval - 2]);
if (move) {
if (chR == 0) {
tbody.insertBefore(tbl.rows[rcval - 1], tbl.rows[chRow * 3]);
tbody.insertBefore(tbl.rows[rcval], tbl.rows[rcval - 1]);
if (chR == 1) {
$(tbl.rows[rcval - 1]).insertAfter($(tbl.rows[chRow * 3 + 2]))
//tbody.insertBefore(tbl.rows[rcval-1], tbl.rows[chRow*3 + 2]);
tbody.insertBefore(tbl.rows[rcval - 1], tbl.rows[rcval - 2]);
function checkFill() {
var fills = [],
rowSum = 0;
$(&#rowcol input&).each(function() {
fills.push(+this.value);
//if(arraySum(fills) !=405)
for (; i & 9; i++) {
rowSum = 0
$.each([0, 1, 2, 3, 4, 5, 6, 7, 8], function(val) {
rowSum += fills[val * 9 + i]
if (arraySum(fills.slice(i * 9, i * 9 + 9)) == 45 && rowSum == 45) {
alert(&您的输入结果不正确,请重新输入!&);
if (!confirm(&继续填写吗?&)) {
$(&.selLevel&).trigger(&change&);
alert(&恭喜您输入正确! 你真聪明!&)
function arraySum(arr) {
var i = 0,
len = arr.length,
arr.sort();
for (i; i & i++) {
if (arr[i] != i + 1) {
sum += arr[i];
rowval = $(&#row1&).val() ? +$(&#row1&).val() : 1,
colval = $(&#col1&).val() ? +$(&#col1&).val() : 1;
if (this.id == &row1&) {
if (e.keyCode == 38) {
shuffleRowCol(0, rowval, 0)
} else if (e.keyCode == 40) {
shuffleRowCol(0, rowval, 1)
if (e.keyCode == 37) {
shuffleRowCol(1, colval, 0)
} else if (e.keyCode == 39) {
shuffleRowCol(1, colval, 1)
$(&.change button&).on(&click&, function() {
var rowval1 = +$(&#row1&).val(),
colval1 = +$(&#col1&).val()
// chR = rowval1%3
// chRow = Math.ceil(rowval1/3)
// chC = colval1%3
// chCol = Math.ceil(colval1/3)
if (this.id == &rowUp&) {
shuffleRowCol(0, rowval1, 0)
} else if (this.id == &rowDown&) {
shuffleRowCol(0, rowval1, 1)
} else if (this.id == &colLeft&) {
shuffleRowCol(1, colval1, 0)
} else if (this.id == &colRight&) {
shuffleRowCol(1, colval1, 1)
$(&.selLevel&).change(function() {
var nu = +this.
$(&#rowcol input&).each(function(i) {
$(this).removeClass(&to-fill&).val(tds[i]);
if (nu != 0) {
for (i = 0; i & nu * 10 + 10; i++) {
$(&#rowcol input:eq(& + numArr[i] + &)&).val(&&).attr(&class&, &to-fill&);
$(&#check&).click(checkFill);
* [shuffleRowCol description]
{[num]}0 move row,1 move col
{[num]}1-9 move row or col
{[num]}0,1 0 move top or left, 1 move bottom or right
* @return {[num]}
function shuffleRowCol(rc, rcval, move) {
var chR = rcval % 3,
chRow = Math.ceil(rcval / 3) - 1,
tbl = $(&#rowcol&)[0],
tbody = $(&#rowcol tbody&)[0];
if (move) {
if (chR == 0) {
$(&#rowcol tr&).each(function() {
this.insertBefore(this.cells[rcval - 1], this.cells[chRow * 3]);
$(&#rowcol tr&).each(function() {
this.insertBefore(this.cells[rcval], this.cells[rcval - 1]);
//tbl.rows[rcval-1].insertBefore(tbl.rows[rcval-1].cells[rcval], tbl.rows[rcval-1].cells[rcval]);
if (chR == 1) {
$(&#rowcol tr&).each(function() {
$(this.cells[rcval - 1]).insertAfter(this.cells[chRow * 3 + 2])
//this.insertBefore(this.cells[rcval-1], this.cells[chRow*3 + 2]);
$(&#rowcol tr&).each(function() {
this.insertBefore(this.cells[rcval - 1], this.cells[rcval - 2]);
if (move) {
if (chR == 0) {
tbody.insertBefore(tbl.rows[rcval - 1], tbl.rows[chRow * 3]);
tbody.insertBefore(tbl.rows[rcval], tbl.rows[rcval - 1]);
if (chR == 1) {
$(tbl.rows[rcval - 1]).insertAfter($(tbl.rows[chRow * 3 + 2]))
//tbody.insertBefore(tbl.rows[rcval-1], tbl.rows[chRow*3 + 2]);
tbody.insertBefore(tbl.rows[rcval - 1], tbl.rows[rcval - 2]);
function checkFill() {
var fills = [],
rowSum = 0;
$(&#rowcol input&).each(function() {
fills.push(+this.value);
//if(arraySum(fills) !=405)
for (; i & 9; i++) {
rowSum = 0
$.each([0, 1, 2, 3, 4, 5, 6, 7, 8], function(val) {
rowSum += fills[val * 9 + i]
if (arraySum(fills.slice(i * 9, i * 9 + 9)) == 45 && rowSum == 45) {
alert(&您的输入结果不正确,请重新输入!&);
if (!confirm(&继续填写吗?&)) {
$(&.selLevel&).trigger(&change&);
alert(&恭喜您输入正确! 你真聪明!&)
function arraySum(arr) {
var i = 0,
len = arr.length,
arr.sort();
for (i; i & i++) {
if (arr[i] != i + 1) {
sum += arr[i];
13 总笔记数
8187 总阅读量
Copyright &
All Rights Reserved.
合作伙伴:}

我要回帖

更多关于 数独九宫格数独口诀 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信