数独求解算法 详细过程

君,已阅读到文档的结尾了呢~~
2012年世界最难数独详细解题过程,数独 解题,超难数独,最难数独,最难数独题目,数独游戏,世界最难数独,最难的数独,数独技巧,数独游戏下载,数独游戏在线
扫扫二维码,随身浏览文档
手机或平板扫扫即可继续访问
2012年世界最难数独详细解题过程
举报该文档为侵权文档。
举报该文档含有违规或不良信息。
反馈该文档无法正常浏览。
举报该文档为重复文档。
推荐理由:
将文档分享至:
分享完整地址
文档地址:
粘贴到BBS或博客
flash地址:
支持嵌入FLASH地址的网站使用
html代码:
&embed src='/DocinViewer-4.swf' width='100%' height='600' type=application/x-shockwave-flash ALLOWFULLSCREEN='true' ALLOWSCRIPTACCESS='always'&&/embed&
450px*300px480px*400px650px*490px
支持嵌入HTML代码的网站使用
您的内容已经提交成功
您所提交的内容需要审核后才能发布,请您等待!
3秒自动关闭窗口数独学院 - 详细展示解题过程-App Store诊断报告-热词覆盖-APP详情页-应用雷达
输入iTunes url 例:https:///cn/id?mt=8或者直接输入里面的 id ,可以直达此 app 排名详情
您的ASO任务单
想要做好App排名优化 如何快速提高APP在App Store中的曝光度 以下几个任务您需要完成!
热词覆盖分析:
回顾分析历史热词覆盖,提高你在App Store中的曝光度。
热门关键词:
这是一个决定你APP生死的因素,你需要时刻关注。
推荐关键词:
我们监测到你当前还有很多关键词可用。
添加一个或者两个排名靠前优化难度高的关键词在你的APP标题中。
使你的用户更容易读懂你的描述。
确保您的应用有五张截图,展示您应用最佳的功能。
展示一个你最佳功能的视频。
热词覆盖分析
图表仅展示近一周热词覆盖数据,如需查询历史(近两年)热词覆盖数据详情,请联系我们。
热门关键词
我们将关键词前50名分成4组,每组仅展示10个关键词,(想查看更多的关键词请联系我们)目前您前50的关键词过少,您还有很大的上升空间,请联系我们让我们来帮助您。
以上展示前50名的关键词,每组最多展示10个关键词,如果需要查询余下全部的关键词请联系我们。
推荐关键词
通过推荐关键词系统,我们会将各行各业关键词集中分析筛选,进行智能匹配,匹配出当前最适合你应用的一批关键词,持续为您的应用创造最大的价值,如果您对我们推荐关键词系统比较感兴趣请联系我们。
您的图标应该精心设计,这样可以提高你APP点击率,同时也提高了转换率,请确保你的描述字符足够,添加边框和文字。
您的APP的名字有足够的长!有13个字符。您可以通过添加或改进一些相关的关键字来优化APP名称。通过我们的关键词难度分析找到适合您的APP最好的关键字。
数独学院 - 详细展示解题过程
您的APP的描述似乎太短。它只有895个字符。我们强烈建议至少写1000字符。(功能描述,特征,如何使用您的APP,…)你的描述要能吸引到用户下载你的APP,另外,一定要添加重要的和你的应用相关的关键字在你的描述里面,这样可以提高你在App Store中页面的可读性,同时也对搜索结果做出了优化
我们建议您使用标题,段落,符号和符号列表来构建您的描述,描述前255个字符内容要明确能吸引人,因为它会显示在APP Store的搜索结果里面,不要忘记了包括一些好的号召活动。
数独的乐趣在于逻辑推理过程。而当前的数独应用中,最大的问题在于无法为玩家解惑。玩家在碰到麻烦时,要么自己猜数字;要么让系统帮忙填一个莫名其妙的数字。玩家依然迷惑,依然无法成长。数独学院彻底解决了这个问题。数独是人类有史以来最优秀的益智游戏之一,在全世界有无数的粉丝。数独学院的愿景就是:让广大玩家在数独世界中体验神奇,登上高峰。 数独学院既是游戏,又是教程,二者融为一体,富教于乐。--- 传道数独学院纳入了业界最专业、最高规格的解题技巧和名称,每个技巧都有详细的动画教程。技巧包括唯一数(Last Value)、宫摒除解(Hidden Single in box)、行列摒除解(Hidden Single in line)、宫区块摒除(Pointing)、行列区块摒除(Claiming)、数对(Naked/Hidden Pair)、三链数(Triplet)、四链数(Quad)、四角对角线法则(X-Wing)、三链列(Swordfish)、四链列(Jellyfish)、摩天楼(Skyscraper)、双线风筝(Two Strings Kite)、多宝鱼(Turbot Fish)、X链(X-Chain)、组合X链(Group X-Chain)、XY链(XY-Chain)--- 授业数独学院按照解题技巧来组织章节关卡,每个章节学习一个解题技巧,从易到难,逐步深入。从新手直通大师。--- 解惑数独学院打造了一个强大的实时答疑系统,她可以动态展示每一个详细的解题步骤,每一个技巧及详细描述,解答同学的每一个疑惑。--- 解题器解题器可以解答玩家自己输入的谜题,当玩家在其它地方碰到让自己困惑的谜题时,可以通过通用解题器寻找答案。--- 无尽挑战数独学院提供“普通”、“困难”和“传奇”三大难度的挑战关卡,里面包含无穷无尽的数独谜题。谜题根据难度随机出现,在这里你可以挑战你的连胜纪录,并斩获奖励。
目前您有5个截图,确保用一些文字来描述您的APP的每一个截图。确保您的前两个截屏展示您的最佳功能,因为它们将显示在App store详情页里面。
APP视频是说服用户下载你的APP的一个有效的方法。APP视频短片展示关于你APP的信息,它可以帮助用户决定该APP是否适合自己。它的功能画面是否能吸引到用户,您的视频我们建议时长在:15秒-30秒
如何避免你所有的努力付诸东流
1、我们结合几年来的视频制作和应用程序的营销以及推广经验,为国内APP开发商提供强大的应用程序宣传视频。在设计应用程序视频时一定要做好用户群体精准定位调研,分析出你的应用程序适合哪些类型的用户群体(年龄,性别,位置,兴趣,行为和设备类型等),你的所有的一切都是围绕着他们在设计开发。如果没有正确的定位,你以往所有努力所有的广告费都将付诸东流。
2、视频展示有各种各样的尺寸,你需要做的就是让你的视频能够在任何设备上保持其完整性,(不同机型的视频尺寸
如下:306×544,360×640,414×736,486×864,720××1920)。
3、设计视频内容不用太过于浮夸复杂,那样只会让用户眼睛疲惫思维混乱产生反感,图形元素结合简单视频设计能让用户看起来更流畅舒服。
如何从我们强大的ASO专业工具中受益?那就让我们充满激情的团队来帮助您!我们希望能帮助国内每一位App开发商,在优化推广的道路上走出目前困境,越做越好,越做越强!
分析其它竞争对手
谁能掌握市场的先机,谁能及时把握竞争对手的动态,谁就是在竞争中掌握了主动。
想要制作独一无二的视频,想要应用程序视频更加有吸引力,通过视频获得更多的真实用户,赶紧行动,我们会竭诚为您服务,帮助开发商制作出适合的视频,抓住应用的闪光点,让其尽可能多的展现在用户面前。数独解题方法大全_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
数独解题方法大全
上传于||暂无简介
阅读已结束,如果下载本文需要使用0下载券
想免费下载更多文档?
下载文档到电脑,查找使用更方便
还剩18页未读,继续阅读
你可能喜欢你玩数独的套路是怎样的?
我发现业余数独爱好者,都有自己总结归纳的拿到题目后一二三步的填数步骤,希望大家共同交流一下
按投票排序
4月4抱歉,这段时间一直忙,没有时间深入玩,发现一个关于数独技巧的网站。觉得很有用,贴出共大家一起交流学习。=================3月5更新说明:答案中所说的方法都是在填出某一个数时,那一刻自己脑海中的想法,可能这个想法并不是最简的,或者与其他方法本质相同,更有甚者,可能得出结果纯粹是偶然。但,不好意思,当时就是这样想的,我如实记录而已。=================3月3多图好吧,估摸着这是个天坑,只能边玩边总结,慢慢填了......
先说几句无关的话,在手机上玩时,我最喜欢的是一个叫熊猫数独的app。界面干净简单,五种难度等级,十种不同网格模式,共计5000张数独。有兴趣的可以找去广告版试试。 我玩数独纯粹是打发时间的,所以很业余,说的不严谨还请谅解。言归正传否定法对于相对简单的数独来说,方法套数什么的没意义。从1到9的一遍遍机械地尝试这是最普遍的方法了。 或者从已存在的数字多的开始,反正就是一遍遍尝试。注意,我所说的尝试不是一个一个空格去试数字,而是就已经存在的数字去否定该数字不能存在的地方,即否定法。举例如下:
而对于中等困难极难这些难度等级的数独。这个时候光机械的这么一遍遍的排除否定,恐怕是完成不了了。这个时候,方法套数才开始发挥作用。否定法进阶之双重否定;如图:用否定法(红色线)排除后,左中小九宫格还剩下(3,4)(3,5)两个空格可以填'2'。再用否定法(蓝色线)可确定中间小九宫格,‘2’只能在(5,4)或(6,4)位置,这样(3,4)就绝对不能填‘2’了,所以左中小宫格‘2’只能在(3,5)的位置。下图同样也是双重否定,试试吧~否定法进阶之多重否定;如图:在中间小宫格中,红线否定上面三个,所以‘7’只能在(4,6)(5,6)(6,6),所以(7,6)不能是‘7’;同理,蓝色线确定(9,5)不能是‘7’;再次,紫线确定(8,4)(8,5)不能是‘7’。行少列补,列少行补;第7列还差三个数‘1’‘5’‘6’,而通过第5行有‘6’‘5’则确定(7,5)位置应该填‘1’下图第7行少四个数‘2’‘3’‘4’‘5’,通过第2列有‘2’‘4’‘3’则可确定(2,7)位置应该填‘5’然后可以否定法与之结合:。。。。。。挖坑待填。。。。。。===================================3月5更新格内缺,格外补下图左上九宫格缺数字“1”“5”“6”“9”3行1列分别有“9”“6”“1”所以,相应位置填“5”行列去除候选当否定法以及之前的一些方法都让自己难以再简单填数之后,该如图一样填写各种可能情况了(很多时候,在填候选的过程中,一些数字就自然而然的对应上位置了,这就没截图了)然后,当该行或该列如图红圈圈一样,出现相同的两个数字(惭愧,目前相同三个数字的规律还没总结出来。),就可以放心去除该行或该列其它格子中紫圈圈里相同的数字了。格内去除候选同理。双重否定+情迷第三者当双重否定后,出现相同的数字抢对应的两排,那我们就果断选择第三排吧~格内唯一选唯一,行唯一选唯一,列唯一选唯一(好像是拐了弯的法子,暂写入)下面这一图,在填候选数字时,(4,6)为什么没有“2”,我真心想不起来了至于这图,当时做的时候,确实用的候选数字在小九宫格内唯一来做的。整理时发现,其实行也唯一,列也唯一。也就是直接用否定法就可以确定啊摔!所以时刻别忘否定法。基本上,目前我玩的所有数独,只要肯花时间,运用上面的套路方法,大部分都能解出来。至于接下来那些不得不分情况讨论的数独。等我慢慢玩,再和大家分享吧~
淡化解法,逻辑为王;排除为主,标注提示;线索串联,全盘观察;步步为营,思路连贯;遇到卡点,检索遗漏;碰到难题,寻找锁链;变型题型,搞懂规则;标准思路,结合新规;没有已知,寻找破点;手工题目,揣摩圣意;实在没招,暴力破解;完成题目,心情舒爽!
先从1到9过一遍,把能填的直接填上,顺便把可能性在二选一的格子用小标记备注,会极大提高后面填字的效率,方便记忆。我的习惯是先横竖,再小九格推。小技巧很多,没例子说不清楚,自己多玩玩就摸索出来了。最后绞尽脑汁都推不出来的时候就用假设法。原则是不要蒙,不然就没意思了,要相信没有解不开的数独。最后推荐一个sudoku2的app,很好用。
这是我数独入门的时候养成的习惯.1.就是一开始1到9一个一个数字找,就是读题,把简单不动脑的检查先做了,就是把可能仅有一个数的未知格先填好作为已知条件玩到"疯掉"那个程度的时候,2.先把把每个空格可能的数字都确定好了,从少数的只有较少的数字可行的空格先开始,设成是一个已知数字的格A,在遵循几个客观原则下(1 九宫内数字1~9仅出现一次,否则空格A的假设不成立(2 同一行/列内数字1~9仅出现一次,否则空格A的假设不成立(3 其他未确定的格出现自身可能出现的数字,否则空格A的假设不成立一边做一边自检,出错就立刻推倒重做的笨方法.所以给我一个数独我就能玩很久很久....这是一个悲伤的故事,我不知道是多少次对1.无法解决的数独屈服,才开始的这条漫长的旅程...我开始2.的时候就会做了,就算全程没错,也忍不住一定要做的事3.纠错发现错误和纠正错误都是必不可少的,承认错误和重新开始需要勇气和耐性.从来就没蒙过,因为我心里明白以我的人品,蒙对的几率跟室内遭雷劈的几率是差不多的...
推荐一款数独应用。英文名叫sudoku 10000 plus。下面是国内的下载链接,或者如果有条件也可以上google play搜下试了差不多十来个数独应用之后就留下了这一款,因为一是题目多,难度分级多,适合逐步进阶。二是里面的提示功能相当强劲,可以详细的告诉你这个解法的名字,原理,例子。循序渐进,非常有助于提高解题水平。关键是结合你正在做的例子,记得非常牢固。推荐从低一点的等级开始试起,·如果连做三道都能不看提示轻松解题的话,就提升到下一个等级。直到某个等级发现解题过程中需要看一到两次提示,说明出现了你尚未掌握的解题方法,继续做,等这个等级的题对你也没难度的时候,恭喜你,你肯定掌握了新的解题方法,进军下一等级吧。
1.首先把第一眼能推出来的数字写上;
2.再在剩下的空格里写出所以可能的数字;
3.然后把第二步中的数字有选择性地划掉,毕竟有的数字经过推理会发现不可能出现在那里;
4.如果还有有争议的数字,就用最笨的法子,先划掉一个,推出其他的。如果就此全部推出来,就做完了;如果推到一半发现错误,就变相地排除了一个答案。
看了赞最多的答主,觉得太复杂了,作为一个数独爱好者我说下自己的步骤第一步:二元法刚拿到的数独一定有这么两个相同的数占着自己的九宫格,并向外延伸霸占两条线(红线),导致另一个九宫格的数只能存在一个确切的位置。刚拿到的数独一定有这么两个相同的数占着自己的九宫格,并向外延伸霸占两条线(红线),导致另一个九宫格的数只能存在一个确切的位置。第二步:占行法当用第一步都做完后,就可以尝试第二步。当用第一步都做完后,就可以尝试第二步。由2的限制可以知道右下的九宫格的2必定处于最右侧(绿圈),这同时能反馈到右中的九宫格从而得知右中的2的确切位置。这种方法适用于当有一个九宫格有3个连续的数字时(即满行或者满列),如右下九宫格的 1
3.有时候做完第一步发现没有满足第二步条件的九宫格,则可以直接跳到第三步。第三步:多限制法这其实是最基本也最重要的步骤,在步骤的循环中需要反复的使用。第一步是在同行或者同列的九宫格上排除,这种方法则是通过完全不相干的相同数字排除。如图中的三个8一同限制了右中九宫格的8的位置。第四步:多行排除法这种方法经常有意想不到的作用。这种方法经常有意想不到的作用。使用的条件是找到一个位置分布广泛的数字(如图中的7)然后找到快完成却缺这个数字的一行或者一列(图中粉红框的一行)这时就能用其他的数字7来确定这一行中数字7的位置。基本以上步奏就能做出大部分中等和简单的数独,再加上自己的一些思维就能完成很多。但是我真的碰到过几次以上步骤解决不了的,同时又没头绪,这时我找到了新的杀招。究极步:极限排除法使用条件是找到一个周围数字很多的空格,然后让各种条件去限制它使用条件是找到一个周围数字很多的空格,然后让各种条件去限制它如图红线,他周围的数字表明他不可能是 1 2 3 4 8 6 7 9....所以它绝对是8!不到万不得已,没必要使用这招。That‘s all。
1.前言一直以来很想把经常用到的一些填数独的小技巧进行系统地整理,可是又一直懒得排头。正好这次有闲心,一口气就先写到这儿,至于完善嘛,日后再说了。首先是数独的规则。数独的规则其实很简单,只需要满足两个条件:条件①:每条直线(只包括水平和垂直直线)上只能出现1~9这九个数字。条件②:每个九宫格内只能出现1~9这九个数字。2.误区在这里先指出一个误区。(温馨提示,这个误区仅仅是一个很简单的东西,对于稍微会点数独的同学来说,就可以自行跳过我班门弄斧的这一段)。话不多说,直接上图。如图,红色的数字为那个格子中可能填的数字,我记得当年我上小学的时候,总会很自信地在第三个九宫格中从上到下依次填上4和1,不知道为什么,可能这就是传说中的迷之自信吧。后来渐渐发现,果然是年少无知不懂事,图样图僧破。像这种几个不同格子中可能填入的数字还不同的情况,实际应用起来并不好用,还容易混淆,所以一般不多做考虑。3.感觉很有用的东西3.1
两种情况既然误区的情况没有什么重大意义,那我们就来看看两种比较有用的情况。其实,所有填数独的思想也无非就这两种:情况①:某一确定的格子,填入其中的数有几种可能 (确定格子,不确定数)。如下图所示阴影部分的格子就可以填入1和2这两种情况。情况②:某一确定的数字,一定填入某几个格子。(确定数,不确定格子) 如下图所示,能填上3的格子就有灰色阴影这四个格子。3.2
填数独步骤步骤①:标出所有不确定的可能。利用数独的规则可以确定某些格子中只能填入哪些数,也就像情况①。当然,熟练后这一步通常会省略掉。步骤②:尽可能多地排除数字或格子的可能。运用做数独的一些规律和技巧,可以排除一些并不明显的可能,很多情况下都可以一直排除到确定某个格子中填某个数,这就算是最好的效果。如图所示,如情况②中的例子,如果在第七个九宫格中你突然发现了一个2,这样就可以直接确定阴影部分填1步骤③:试验。最后就是根据最后尽可能多地排除可能后得到的结果,把所有的答案都假设带进去试,如果到后来出现矛盾,则又可以排除一种情况。我承认这样做很无脑,但确实又不失为一个好办法。以上就是我一直以来做数独的思路,看似很简单,但真正填起数独来仍然很难。难就难在步骤②尽可能多地排除可能这一步,因为这一步涉及到有很多的技巧,毕竟数独技巧的精华就在于此。感觉填数独有点像转魔方,技巧就像解魔方时要用到的公式,用了就很简单,不用的话,哼…那你就转到明年去吧。都说到这里了,如果我不继续往下写有哪些技巧,那么前面写的那些也就没有任何意义了,所以,,,4.继续往下写接下来要介绍的所有技巧,都建立在3.1两种情况之上
排除一个格子中数的情况(排除数字)4.1.1
九宫格排除数如图所示,在第一个九宫格中,因为一个格子中1-8的情况都被排除,所以阴影格子中的情况只能是9(如此简单当然不值得一提,同样,它的使用价值也不是很高)4.1.2
利用直线排除如图所示,如果阴影处只看垂直直线,可能的情况为6.7.8.9,但由于水平直线有7.8.9,所以阴影格子只能是6。(当然,这也简单得不值一提)4.1.3
九宫格+直线排除虽然单是直线排除和单是九宫格排除很简单,而且也不大实用,但是直线和九宫格合起来就很实用了。如下图,如果只看九宫格,阴影格子可以填1.2.3.4.5.8.9,但如果再加上横竖两条直线,就只能填9了。4.1.4
九宫格+直线排除之整体代入顾名思义,把整体代入的思想运用起来可以排除更多的数。填稍微难点的数独时,填到中间时段的时候,这个方法也很好用。如图,对于灰色阴影部分来说,九宫格中有3.4,直线上有1.2.6,所以可能的情况有5.7.8.9,但又因为绿色阴影部分必填7.8.9,所以灰色阴影只能填上5。4.2
排除某个数可能出现的格子的个数(排除格子)当拿到一张81个格子的数独时,却只有不到20个已知数字,其余都得通过推理得出。又因为通过格子排除数字不确定性因素太多,所以一开始用排除格子的方法比较好。4.2.1
通过九宫格排除直线中的格子如图所示,因为第一条直线上必须有一个格子填上3,但又不能在第一个九宫格中,也不能在第二个九宫格中,所以只能“屈居”第三个九宫格中,又因为第三个九宫格中第一排已经有了1和2,所以阴影部分只能填上3。这个方法最开始是高中室友告诉我的,非常实用,屡试不爽。可以说是现在填数独用得最多的一个技巧。百度也叫它区块摒除法。另外这个方法还有个变种这样也可以直接确定阴影部分的数字,百度叫这个方法为撑点定位法。4.2.2
通过直线排除九宫格中的格子如图所示,阴影部分只能填3,这个方法是后来我发现的,与上面的方法如出一辙,也挺实用。其实为了对仗工整,此处应该还有4.2.3直线排除直线和4.2.4九宫格排除九宫格,但又因为一个太简单且不实用,另一个的情况并不存在,所以在这里也不再赘述4.3
利用4.2的方法进行4.1的操作如果通过4.1的方法得出一些数字的可能性,不妨假设那个格子就能就是那个数,然后通过4.2的方法得出矛盾,就可以直接排除那个数字。如图,灰色阴影部分可能是3或者5,如果填上3,那么绿色阴影就必须填上3,如果绿色阴影填上3,则黄色阴影部分就没有地方填3,所以阴影部分只能填54.4
利用4.1的方法进行4.2的操作如图,在第一排中有两个3,可以知道灰色阴影和绿色阴影两个地方可以填3,但又因为第六个九宫格中有一个3,所以绿色阴影不能填3,就只有灰色阴影填上3。5.总结与反思看似每一个例题都能确定一个数字,哈哈,孩子果然还是图样图僧破。在真实的情况中并不可能像理想中那么简单。更多的情况是只能排除一两个可能,仍然不能确定哪个数或者哪一个格子。永远做好任何一个方法都只能让你接近成功,并不等于成功的觉悟凡是用到整体思想的地方,都只能确定整体以外的地方的数,并不能确定这个整体内部如何。而且我总感觉整体思想用得越多,到后面需要试验的地方也会变得越多,不要问为什么,都说了只是感觉每当填数独遇到瓶颈,用了很多方法都不能确定一个数的时候,还是果断选择去试吧。其实,这些都是一些简单的技巧,只使用这点方法,要是做一些很难的数独,还是很伤脑筋,网上也有很多高明的方法供大家参考。6.参考文献百度百科
终于决定献出知乎上的第一次了~
数独这项游戏由于曾被各类杂志拿来作为读者互动的项目,具有很高的普及性。几乎每个人都了解数独都基本规则。但很多人由于只是单纯但把规则当作规则,忽视了其作为一切技巧的原则的重要性。本文的思路是依据数独唯一也是最基本的规则推导出若干条推论,运用这些推论去拆解数独,我将举具体例子来说明这些用法。本文里的大部分推论其实相信很多人都用过,我在这里相当于做一个抽象总结的工作,便于在理论上有一定的说服力。文笔笨拙,若行文枯燥,还望海涵。欢迎一切讨论和指错。-----------------第一次分割---------------------
让我们从最基本的开始:
数独的规则:在由9个3x3的小九格组成的3x3的大九格里填上9次1,2,3,4,5,6,7,8,9,使得每个小九格中每个数字各出现一次,每个大九格中的每行和每列上的9个格子中每个数字各出现一次。该规则是如此的重要以至于我们所有的玩法都是建立在这规则上面的。该规则就好比几何中的基本公设。因此让我们来细细研究一下:
首先注意到到是这1-9虽然是数字,但不牵涉到计算。因此这些数字体现到是它们到差别性,换句话说,如果我们用abcdefghi来代替1-9是可以的,我们甚至可以用颜色来代替它们。因为该规则告诉我们的就是小九格中每个格子都不一样,大九格中每行(以下简称“行”)或每列(以下简称“列”)上都九个格子都不一样。由该规则我们将得出两条推论:推论1、任何一个小九格中或者大九格中每行和每列上的格子有且只有1-9这九个数字。(完备性)
推论2、任何一个小格子上的数字和与其在同一小九格中或同一行或同一列上的数字全不一样。(唯一性)
本文所有证明将放在最后,在这里贴图说明:以左上角的1为例,其所在的小九格中没有其他的1,且1-9都用满了,对于其所在的行或者列上的情况一样适用。以左上角的1为例,其所在的小九格中没有其他的1,且1-9都用满了,对于其所在的行或者列上的情况一样适用。由以上两条推论我们可以得出第三条推论:推论3、对于在同一竖线(或横线)上的三个小九格,每个数字将分别在这些小九格中出现各一次,且同一数字不出现在同一列(或行)上。(分配性)以后证明,目前依旧举以上图说明:以最左边的三个小九格为例:当1出现在了第一个小九格的最左边时,1便只能出现在第二个小九格的第二列或第三列。那么在第三个小九格中,1只能出现在之前没有出现过1 的那一列。在拥有以上推论后,我们便可以解出大部分中等难度下的数独。事实上许多人也正是依靠这些推论和部分自己下意识的衍生技巧解数独的(但许多人只是没有刻意去在乎)。而我们也将以这3条推论和基本规则为最初手段开始,通过解具体的一套题,再引出其他的推论。&我将先写到这里并且把这个回答贴出来,目的只是测试一下上传到图片能否显示&&最终完整的文章也许还会对这些已经贴出对答案进行修改,忘原谅&
按键精灵。===============================================================7.17更新 优化了第三步算法,删掉了重复的第二步,代码扩充到一千多行,expert模式最新记录7:07===============================================================第一次玩数独,顺手撸出一个按键精灵脚本。本以为两个小时就搞定了,没想到一下花了两天时间才完成,最终代码有700多行,已经可以搞定Microsoft Sudoku大多数expert级别的数独(本来天真地以为可以搞定全部,搜了一下才知道数独的水这么深)。因为不会使用子程序,所以代码有部分重复。不会用矩阵变量,用的都是很低效率的解法,数字的读取用的也都是用最基本的颜色查找和颜色读取。完成一个expert数独平均用时在10分钟左右,还有很大的提升空间。抛砖引玉吧。视频:系统环境:Windows 10 build 14379 Microsoft Sudoku 1.3.0.2按键精灵2014版分辨率设置为,任务栏设置为小图标,最大化数独(不是全屏)代码://第一步:全部标满
MoveTo 496, 672
//进入note模式
LeftClick 1
For number = 0 To 8
MoveTo number * 59 + 596, 671
//选择最下面的数字
LeftClick 1
//全部判断点击
For pointr=0 to 8
//一行判断点击
For pointc=0 to 8
pointx = pointc * 58 + 572
pointy= pointr*58+141
GetColor = GetPixelColor(pointx, pointy)
If getcolor = "FFFFFF" Then
MoveTo pointx, pointy
LeftClick 1
//第二步:取消标记
Do While number & 9
MoveTo number * 59 + 596, 671
LeftClick 1
For pointc=0 to 8
pointx = pointc * 58 + 572
pointy= pointr*58+141
GetColor = GetPixelColor(pointx, pointy)
intY = 112
FindColor 565,intY,1089,635,"93691E",intX,intY
If intX & 0 And intY & 0 Then
//一行判断点击
For pointc=0 to 8
pointx = pointc * 58 + 572
pointy= intY+29
GetColor = GetPixelColor(pointx, pointy)
If getcolor = "FBE2E4" Then
MoveTo pointx, pointy
LeftClick 1
//一列判断点击
For pointr=0 to 8
pointx = intX+29
pointy= pointr*58+ 137
GetColor = GetPixelColor(pointx, pointy)
If getcolor = "FBE2E4" Then
MoveTo pointx, pointy
LeftClick 1
//九宫格点击
If intX + 29 & 565 and intX + 29 & 565 + 58 or intX + 29 & 565 + 58 * 3 and intX + 29 & 565 + 58 * 4 or intX + 29 & 565 + 58 * 6 and intX + 29 & 565 + 58 * 7 Then
If intY + 29 & 112 and intY + 29 & 112 + 58 or intY + 29 & 112 + 58 * 3 and intY + 29 & 112 + 58 * 4 or intY + 29 & 112 + 58 * 6 and intY + 29 & 112 + 58 * 7 Then
//一列一行
//一列二行
If intY + 29 & 112+58 and intY + 29 & 112 + 58*2 or intY + 29 & 112 + 58 * 4 and intY + 29 & 112 + 58 * 5 or intY + 29 & 112 + 58 * 7 and intY + 29 & 112 + 58 * 8 Then
//一列三行
If intY + 29 & 112+58*2 and intY + 29 & 112 + 58*3 or intY + 29 & 112 + 58 * 5 and intY + 29 & 112 + 58 * 6 or intY + 29 & 112 + 58 * 8 and intY + 29 & 112 + 58 * 9 Then
If intX + 29 & 565+58 and intX + 29 & 565 + 58*2 or intX + 29 & 565 + 58 * 4 and intX + 29 & 565 + 58 * 5 or intX + 29 & 565 + 58 * 7 and intX + 29 & 565 + 58 * 8 Then
If intY + 29 & 112 and intY + 29 & 112 + 58 or intY + 29 & 112 + 58 * 3 and intY + 29 & 112 + 58 * 4 or intY + 29 & 112 + 58 * 6 and intY + 29 & 112 + 58 * 7 Then
//二列一行
//二列二行
If intY + 29 & 112+58 and intY + 29 & 112 + 58*2 or intY + 29 & 112 + 58 * 4 and intY + 29 & 112 + 58 * 5 or intY + 29 & 112 + 58 * 7 and intY + 29 & 112 + 58 * 8 Then
//二列三行
If intY + 29 & 112+58*2 and intY + 29 & 112 + 58*3 or intY + 29 & 112 + 58 * 5 and intY + 29 & 112 + 58 * 6 or intY + 29 & 112 + 58 * 8 and intY + 29 & 112 + 58 * 9 Then
If intX + 29 & 565+58*2 and intX + 29 & 565 + 58*3 or intX + 29 & 565 + 58 * 5 and intX + 29 & 565 + 58 * 6 or intX + 29 & 565 + 58 * 8 and intX + 29 & 565 + 58 * 9 Then
If intY + 29 & 112 and intY + 29 & 112 + 58 or intY + 29 & 112 + 58 * 3 and intY + 29 & 112 + 58 * 4 or intY + 29 & 112 + 58 * 6 and intY + 29 & 112 + 58 * 7 Then
//三列一行
//三列二行
If intY + 29 & 112+58 and intY + 29 & 112 + 58*2 or intY + 29 & 112 + 58 * 4 and intY + 29 & 112 + 58 * 5 or intY + 29 & 112 + 58 * 7 and intY + 29 & 112 + 58 * 8 Then
//三列三行
If intY + 29 & 112+58*2 and intY + 29 & 112 + 58*3 or intY + 29 & 112 + 58 * 5 and intY + 29 & 112 + 58 * 6 or intY + 29 & 112 + 58 * 8 and intY + 29 & 112 + 58 * 9 Then
GetColor = GetPixelColor(intX+58*x1, intY+58*y1+29)
If getcolor = "FBE2E4" Then
MoveTo intX+58*x1, intY+58*y1+29
LeftClick 1
GetColor = GetPixelColor(intX+58*x2, intY+58*y1+29)
If getcolor = "FBE2E4" Then
MoveTo intX+58*x2, intY+58*y1+29
LeftClick 1
GetColor = GetPixelColor(intX+58*x1, intY+58*y2+29)
If getcolor = "FBE2E4" Then
MoveTo intX+58*x1, intY+58*y2+29
LeftClick 1
GetColor = GetPixelColor(intX+58*x2, intY+58*y2+29)
If getcolor = "FBE2E4" Then
MoveTo intX+58*x2, intY+58*y2+29
LeftClick 1
Goto 找不到就跳出
intY = intY + 55
Rem 找不到就跳出
number=number+1
MoveTo 496, 672 //解除note模式
LeftClick 1
Rem 第三步
//第三步:填充每行列缺少的个数为一的数字
Do While number & 9
MoveTo number * 59 + 596, 671
LeftClick 1
Rem 从这个数字开头开始
For pointr = 0 To 8
MoveTo 550,pointr * 58 + 141
//展示进度
colornum=0
For pointc=0 to 8
pointx = pointc * 58 + 572
pointy= pointr*58+141
GetColor = GetPixelColor(pointx, pointy)
If getcolor = "FBE2E4" Then
colornum=colornum+1
goodcolor=pointc
If colornum = 1 Then
FindColor 565,pointr * 58 + 141,089,pointr * 58 + 141,"93691E",intX3,intY3
If intX3 & 0 And intY3 & 0 Then
MoveTo goodcolor * 58 + 572+29, pointr * 58 + 141
//填充数字
LeftClick 1
MoveTo 496, 672
LeftClick 1
intX2 = goodcolor * 58 + 572
pointr * 58 + 141-29
//重复第二步
//--------------------------------
intX = intX2 + 5
intY = intY2
//一行判断点击
For pointc=0 to 8
pointx = pointc * 58 + 572
pointy= intY+29
GetColor = GetPixelColor(pointx, pointy)
If getcolor = "FBE2E4" Then
MoveTo pointx, pointy
LeftClick 1
//一列判断点击
For pointr=0 to 8
pointx = intX
pointy= pointr*58+ 137
GetColor = GetPixelColor(pointx, pointy)
If getcolor = "FBE2E4" Then
MoveTo pointx, pointy
LeftClick 1
//九宫格点击
If intX + 29 & 565 and intX + 29 & 565 + 58 or intX + 29 & 565 + 58 * 3 and intX + 29 & 565 + 58 * 4 or intX + 29 & 565 + 58 * 6 and intX + 29 & 565 + 58 * 7 Then
If intY + 29 & 112 and intY + 29 & 112 + 58 or intY + 29 & 112 + 58 * 3 and intY + 29 & 112 + 58 * 4 or intY + 29 & 112 + 58 * 6 and intY + 29 & 112 + 58 * 7 Then
//一列一行
//一列二行
If intY + 29 & 112+58 and intY + 29 & 112 + 58*2 or intY + 29 & 112 + 58 * 4 and intY + 29 & 112 + 58 * 5 or intY + 29 & 112 + 58 * 7 and intY + 29 & 112 + 58 * 8 Then
//一列三行
If intY + 29 & 112+58*2 and intY + 29 & 112 + 58*3 or intY + 29 & 112 + 58 * 5 and intY + 29 & 112 + 58 * 6 or intY + 29 & 112 + 58 * 8 and intY + 29 & 112 + 58 * 9 Then
If intX + 29 & 565+58 and intX + 29 & 565 + 58*2 or intX + 29 & 565 + 58 * 4 and intX + 29 & 565 + 58 * 5 or intX + 29 & 565 + 58 * 7 and intX + 29 & 565 + 58 * 8 Then
If intY + 29 & 112 and intY + 29 & 112 + 58 or intY + 29 & 112 + 58 * 3 and intY + 29 & 112 + 58 * 4 or intY + 29 & 112 + 58 * 6 and intY + 29 & 112 + 58 * 7 Then
//二列一行
//二列二行
If intY + 29 & 112+58 and intY + 29 & 112 + 58*2 or intY + 29 & 112 + 58 * 4 and intY + 29 & 112 + 58 * 5 or intY + 29 & 112 + 58 * 7 and intY + 29 & 112 + 58 * 8 Then
//二列三行
If intY + 29 & 112+58*2 and intY + 29 & 112 + 58*3 or intY + 29 & 112 + 58 * 5 and intY + 29 & 112 + 58 * 6 or intY + 29 & 112 + 58 * 8 and intY + 29 & 112 + 58 * 9 Then
If intX + 29 & 565+58*2 and intX + 29 & 565 + 58*3 or intX + 29 & 565 + 58 * 5 and intX + 29 & 565 + 58 * 6 or intX + 29 & 565 + 58 * 8 and intX + 29 & 565 + 58 * 9 Then
If intY + 29 & 112 and intY + 29 & 112 + 58 or intY + 29 & 112 + 58 * 3 and intY + 29 & 112 + 58 * 4 or intY + 29 & 112 + 58 * 6 and intY + 29 & 112 + 58 * 7 Then
//三列一行
//三列二行
If intY + 29 & 112+58 and intY + 29 & 112 + 58*2 or intY + 29 & 112 + 58 * 4 and intY + 29 & 112 + 58 * 5 or intY + 29 & 112 + 58 * 7 and intY + 29 & 112 + 58 * 8 Then
//三列三行
If intY + 29 & 112+58*2 and intY + 29 & 112 + 58*3 or intY + 29 & 112 + 58 * 5 and intY + 29 & 112 + 58 * 6 or intY + 29 & 112 + 58 * 8 and intY + 29 & 112 + 58 * 9 Then
GetColor = GetPixelColor(intX + 58 * x1, intY + 58 * y1 + 29)
If getcolor = "FBE2E4" Then
MoveTo intX+58*x1, intY+58*y1+29
LeftClick 1
GetColor = GetPixelColor(intX + 58 * x2, intY + 58 * y1 + 29)
If getcolor = "FBE2E4" Then
MoveTo intX+58*x2, intY+58*y1+29
LeftClick 1
GetColor = GetPixelColor(intX + 58 * x1, intY + 58 * y2 + 29)
If getcolor = "FBE2E4" Then
MoveTo intX+58*x1, intY+58*y2+29
LeftClick 1
GetColor = GetPixelColor(intX + 58 * x2, intY + 58 * y2 + 29)
If getcolor = "FBE2E4" Then
MoveTo intX+58*x2, intY+58*y2+29
LeftClick 1
//重复结束---------------------------------------------
MoveTo 496, 672 //解除note模式
LeftClick 1
Goto 从这个数字开头开始
For pointc = 0 To 8
MoveTo pointc * 58 + 572+29 ,90 //展示进度
colornum=0
For pointr=0 to 8
pointx = pointc * 58 + 572
pointy= pointr*58+141
GetColor = GetPixelColor(pointx, pointy)
If getcolor = "FBE2E4" Then
colornum=colornum+1
goodcolor=pointr
If colornum = 1 Then
FindColor pointc*58+572,112,pointc*58+572,635,"93691E",intX3,intY3
If intX3 & 0 And intY3 & 0 Then
MoveTo pointc * 58 + 572+29, goodcolor * 58 + 141
//填充数字
LeftClick 1
MoveTo 496, 672
LeftClick 1
intX2 = pointc * 58 + 572
intY2 =goodcolor * 58 + 141-29
//重复第二步
//--------------------------------
intX = intX2 + 5
intY = intY2
//一行判断点击
For pointc=0 to 8
pointx = pointc * 58 + 572
pointy= intY+29
GetColor = GetPixelColor(pointx, pointy)
If getcolor = "FBE2E4" Then
MoveTo pointx, pointy
LeftClick 1
//一列判断点击
For pointr=0 to 8
pointx = intX
pointy= pointr*58+ 137
GetColor = GetPixelColor(pointx, pointy)
If getcolor = "FBE2E4" Then
MoveTo pointx, pointy
LeftClick 1
//九宫格点击
If intX + 29 & 565 and intX + 29 & 565 + 58 or intX + 29 & 565 + 58 * 3 and intX + 29 & 565 + 58 * 4 or intX + 29 & 565 + 58 * 6 and intX + 29 & 565 + 58 * 7 Then
If intY + 29 & 112 and intY + 29 & 112 + 58 or intY + 29 & 112 + 58 * 3 and intY + 29 & 112 + 58 * 4 or intY + 29 & 112 + 58 * 6 and intY + 29 & 112 + 58 * 7 Then
//一列一行
//一列二行
If intY + 29 & 112+58 and intY + 29 & 112 + 58*2 or intY + 29 & 112 + 58 * 4 and intY + 29 & 112 + 58 * 5 or intY + 29 & 112 + 58 * 7 and intY + 29 & 112 + 58 * 8 Then
//一列三行
If intY + 29 & 112+58*2 and intY + 29 & 112 + 58*3 or intY + 29 & 112 + 58 * 5 and intY + 29 & 112 + 58 * 6 or intY + 29 & 112 + 58 * 8 and intY + 29 & 112 + 58 * 9 Then
If intX + 29 & 565+58 and intX + 29 & 565 + 58*2 or intX + 29 & 565 + 58 * 4 and intX + 29 & 565 + 58 * 5 or intX + 29 & 565 + 58 * 7 and intX + 29 & 565 + 58 * 8 Then
If intY + 29 & 112 and intY + 29 & 112 + 58 or intY + 29 & 112 + 58 * 3 and intY + 29 & 112 + 58 * 4 or intY + 29 & 112 + 58 * 6 and intY + 29 & 112 + 58 * 7 Then
//二列一行
//二列二行
If intY + 29 & 112+58 and intY + 29 & 112 + 58*2 or intY + 29 & 112 + 58 * 4 and intY + 29 & 112 + 58 * 5 or intY + 29 & 112 + 58 * 7 and intY + 29 & 112 + 58 * 8 Then
//二列三行
If intY + 29 & 112+58*2 and intY + 29 & 112 + 58*3 or intY + 29 & 112 + 58 * 5 and intY + 29 & 112 + 58 * 6 or intY + 29 & 112 + 58 * 8 and intY + 29 & 112 + 58 * 9 Then
If intX + 29 & 565+58*2 and intX + 29 & 565 + 58*3 or intX + 29 & 565 + 58 * 5 and intX + 29 & 565 + 58 * 6 or intX + 29 & 565 + 58 * 8 and intX + 29 & 565 + 58 * 9 Then
If intY + 29 & 112 and intY + 29 & 112 + 58 or intY + 29 & 112 + 58 * 3 and intY + 29 & 112 + 58 * 4 or intY + 29 & 112 + 58 * 6 and intY + 29 & 112 + 58 * 7 Then
//三列一行
//三列二行
If intY + 29 & 112+58 and intY + 29 & 112 + 58*2 or intY + 29 & 112 + 58 * 4 and intY + 29 & 112 + 58 * 5 or intY + 29 & 112 + 58 * 7 and intY + 29 & 112 + 58 * 8 Then
//三列三行
If intY + 29 & 112+58*2 and intY + 29 & 112 + 58*3 or intY + 29 & 112 + 58 * 5 and intY + 29 & 112 + 58 * 6 or intY + 29 & 112 + 58 * 8 and intY + 29 & 112 + 58 * 9 Then
GetColor = GetPixelColor(intX + 58 * x1, intY + 58 * y1 + 29)
If getcolor = "FBE2E4" Then
MoveTo intX+58*x1, intY+58*y1+29
LeftClick 1
GetColor = GetPixelColor(intX + 58 * x2, intY + 58 * y1 + 29)
If getcolor = "FBE2E4" Then
MoveTo intX+58*x2, intY+58*y1+29
LeftClick 1
GetColor = GetPixelColor(intX + 58 * x1, intY + 58 * y2 + 29)
If getcolor = "FBE2E4" Then
MoveTo intX+58*x1, intY+58*y2+29
LeftClick 1
GetColor = GetPixelColor(intX + 58 * x2, intY + 58 * y2 + 29)
If getcolor = "FBE2E4" Then
MoveTo intX+58*x2, intY+58*y2+29
LeftClick 1
//重复结束---------------------------------------------
MoveTo 496, 672 //解除note模式
LeftClick 1
Goto 从这个数字开头开始
//每九宫格
For y2 = 1 To 3
For x2 = 1 To 3
MoveTo 652 + 58 * 3 * (x2 - 1), 199 + 58 * 3 * (y2 - 1)
colornum = 0
For y = 1 To 3
For x = 1 To 3
GetColor = GetPixelColor(58 * x + 58 * 3 * (x2 - 1) + 514, 58 * y + 83 + 58 * 3 * (y2 - 1))
If getcolor = "FBE2E4" Then
colornum = colornum + 1
goodcolorx = x
goodcolory = y
If colornum = 1 Then
FindColor 594+ 58 * 3 * (x2 - 1), 141+ 58 * 3 * (y2 - 1), 710+ 58 * 3 * (x2 - 1), 257+ 58 * 3 * (y2 - 1), "93691E", intX, intY
If intX & 0 And intY & 0 Then
MoveTo 58 * goodcolorx + 514+ 58 * 3 * (x2 - 1), 58 * goodcolory + 83+ 58 * 3 * (y2 - 1)
LeftClick 1
MoveTo 496, 672
LeftClick 1
intX2 = 58 * goodcolorx + 514+ 58 * 3 * (x2 - 1)-29
intY2 = 58 * goodcolory + 83+ 58 * 3 * (y2 - 1)-29
//重复第二步
//--------------------------------
intX = intX2 + 5
intY = intY2
//一行判断点击
For pointc=0 to 8
pointx = pointc * 58 + 572
pointy= intY+29
GetColor = GetPixelColor(pointx, pointy)
If getcolor = "FBE2E4" Then
MoveTo pointx, pointy
LeftClick 1
//一列判断点击
For pointr=0 to 8
pointx = intX
pointy= pointr*58+ 137
GetColor = GetPixelColor(pointx, pointy)
If getcolor = "FBE2E4" Then
MoveTo pointx, pointy
LeftClick 1
//九宫格点击
If intX + 29 & 565 and intX + 29 & 565 + 58 or intX + 29 & 565 + 58 * 3 and intX + 29 & 565 + 58 * 4 or intX + 29 & 565 + 58 * 6 and intX + 29 & 565 + 58 * 7 Then
If intY + 29 & 112 and intY + 29 & 112 + 58 or intY + 29 & 112 + 58 * 3 and intY + 29 & 112 + 58 * 4 or intY + 29 & 112 + 58 * 6 and intY + 29 & 112 + 58 * 7 Then
//一列一行
//一列二行
If intY + 29 & 112+58 and intY + 29 & 112 + 58*2 or intY + 29 & 112 + 58 * 4 and intY + 29 & 112 + 58 * 5 or intY + 29 & 112 + 58 * 7 and intY + 29 & 112 + 58 * 8 Then
//一列三行
If intY + 29 & 112+58*2 and intY + 29 & 112 + 58*3 or intY + 29 & 112 + 58 * 5 and intY + 29 & 112 + 58 * 6 or intY + 29 & 112 + 58 * 8 and intY + 29 & 112 + 58 * 9 Then
If intX + 29 & 565+58 and intX + 29 & 565 + 58*2 or intX + 29 & 565 + 58 * 4 and intX + 29 & 565 + 58 * 5 or intX + 29 & 565 + 58 * 7 and intX + 29 & 565 + 58 * 8 Then
If intY + 29 & 112 and intY + 29 & 112 + 58 or intY + 29 & 112 + 58 * 3 and intY + 29 & 112 + 58 * 4 or intY + 29 & 112 + 58 * 6 and intY + 29 & 112 + 58 * 7 Then
//二列一行
//二列二行
If intY + 29 & 112+58 and intY + 29 & 112 + 58*2 or intY + 29 & 112 + 58 * 4 and intY + 29 & 112 + 58 * 5 or intY + 29 & 112 + 58 * 7 and intY + 29 & 112 + 58 * 8 Then
//二列三行
If intY + 29 & 112+58*2 and intY + 29 & 112 + 58*3 or intY + 29 & 112 + 58 * 5 and intY + 29 & 112 + 58 * 6 or intY + 29 & 112 + 58 * 8 and intY + 29 & 112 + 58 * 9 Then
If intX + 29 & 565+58*2 and intX + 29 & 565 + 58*3 or intX + 29 & 565 + 58 * 5 and intX + 29 & 565 + 58 * 6 or intX + 29 & 565 + 58 * 8 and intX + 29 & 565 + 58 * 9 Then
If intY + 29 & 112 and intY + 29 & 112 + 58 or intY + 29 & 112 + 58 * 3 and intY + 29 & 112 + 58 * 4 or intY + 29 & 112 + 58 * 6 and intY + 29 & 112 + 58 * 7 Then
//三列一行
//三列二行
If intY + 29 & 112+58 and intY + 29 & 112 + 58*2 or intY + 29 & 112 + 58 * 4 and intY + 29 & 112 + 58 * 5 or intY + 29 & 112 + 58 * 7 and intY + 29 & 112 + 58 * 8 Then
//三列三行
If intY + 29 & 112+58*2 and intY + 29 & 112 + 58*3 or intY + 29 & 112 + 58 * 5 and intY + 29 & 112 + 58 * 6 or intY + 29 & 112 + 58 * 8 and intY + 29 & 112 + 58 * 9 Then
GetColor = GetPixelColor(intX + 58 * x1, intY + 58 * y1 + 29)
If getcolor = "FBE2E4" Then
MoveTo intX+58*x1, intY+58*y1+29
LeftClick 1
GetColor = GetPixelColor(intX + 58 * x2, intY + 58 * y1 + 29)
If getcolor = "FBE2E4" Then
MoveTo intX+58*x2, intY+58*y1+29
LeftClick 1
GetColor = GetPixelColor(intX + 58 * x1, intY + 58 * y2 + 29)
If getcolor = "FBE2E4" Then
MoveTo intX+58*x1, intY+58*y2+29
LeftClick 1
GetColor = GetPixelColor(intX + 58 * x2, intY + 58 * y2 + 29)
If getcolor = "FBE2E4" Then
MoveTo intX+58*x2, intY+58*y2+29
LeftClick 1
//重复结束---------------------------------------------
MoveTo 496, 672 //解除note模式
LeftClick 1
Goto 从这个数字开头开始
number = number + 1
//第四步:放数字
MoveTo 1173, 369
//点击空白处消除数字选中
LeftClick 1
Rem 重新开始
MoveTo 1173, 369
//点击空白处消除数字选中
LeftClick 1
//全行判断
For pointr = 0 To 8
//一行判断
For pointc = 0 To 8
MoveTo 1173, 369
//点击空白处消除数字选中
LeftClick 1
pointx = pointc * 58 + 572
pointy= pointr*58+141
GetColor = GetPixelColor(pointx, pointy)
If getcolor = "FFFFFF" Then
intX2 = pointx-2
//兼容后面的代码
intY2 = pointy-29
colornum = 0
For number=0 to 8
MoveTo number * 59 + 596, 671
LeftClick 1
getcolor = GetPixelColor(intX2+2, intY2+29)
//判断该格颜色
If getcolor = "FBE2E4" Then
colornum = colornum + 1
goodcolor=number
colornum = 1
number = goodcolor
MoveTo 1173, 369
//点击空白处消除数字选中
LeftClick 1
MoveTo number * 59 + 596, 671
LeftClick 1
MoveTo intX2 + 5, intY2 + 29
LeftClick 1
MoveTo 496, 672
LeftClick 1
//重复第二步
//--------------------------------
GetColor = GetPixelColor(pointx, pointy)
intX = intX2 + 5
intY = intY2
//一行判断点击
For pointc=0 to 8
pointx = pointc * 58 + 572
pointy= intY+29
GetColor = GetPixelColor(pointx, pointy)
If getcolor = "FBE2E4" Then
MoveTo pointx, pointy
LeftClick 1
//一列判断点击
For pointr=0 to 8
pointx = intX+29
pointy= pointr*58+ 137
GetColor = GetPixelColor(pointx, pointy)
If getcolor = "FBE2E4" Then
MoveTo pointx, pointy
LeftClick 1
//九宫格点击
If intX + 29 & 565 and intX + 29 & 565 + 58 or intX + 29 & 565 + 58 * 3 and intX + 29 & 565 + 58 * 4 or intX + 29 & 565 + 58 * 6 and intX + 29 & 565 + 58 * 7 Then
If intY + 29 & 112 and intY + 29 & 112 + 58 or intY + 29 & 112 + 58 * 3 and intY + 29 & 112 + 58 * 4 or intY + 29 & 112 + 58 * 6 and intY + 29 & 112 + 58 * 7 Then
//一列一行
//一列二行
If intY + 29 & 112+58 and intY + 29 & 112 + 58*2 or intY + 29 & 112 + 58 * 4 and intY + 29 & 112 + 58 * 5 or intY + 29 & 112 + 58 * 7 and intY + 29 & 112 + 58 * 8 Then
//一列三行
If intY + 29 & 112+58*2 and intY + 29 & 112 + 58*3 or intY + 29 & 112 + 58 * 5 and intY + 29 & 112 + 58 * 6 or intY + 29 & 112 + 58 * 8 and intY + 29 & 112 + 58 * 9 Then
If intX + 29 & 565+58 and intX + 29 & 565 + 58*2 or intX + 29 & 565 + 58 * 4 and intX + 29 & 565 + 58 * 5 or intX + 29 & 565 + 58 * 7 and intX + 29 & 565 + 58 * 8 Then
If intY + 29 & 112 and intY + 29 & 112 + 58 or intY + 29 & 112 + 58 * 3 and intY + 29 & 112 + 58 * 4 or intY + 29 & 112 + 58 * 6 and intY + 29 & 112 + 58 * 7 Then
//二列一行
//二列二行
If intY + 29 & 112+58 and intY + 29 & 112 + 58*2 or intY + 29 & 112 + 58 * 4 and intY + 29 & 112 + 58 * 5 or intY + 29 & 112 + 58 * 7 and intY + 29 & 112 + 58 * 8 Then
//二列三行
If intY + 29 & 112+58*2 and intY + 29 & 112 + 58*3 or intY + 29 & 112 + 58 * 5 and intY + 29 & 112 + 58 * 6 or intY + 29 & 112 + 58 * 8 and intY + 29 & 112 + 58 * 9 Then
If intX + 29 & 565+58*2 and intX + 29 & 565 + 58*3 or intX + 29 & 565 + 58 * 5 and intX + 29 & 565 + 58 * 6 or intX + 29 & 565 + 58 * 8 and intX + 29 & 565 + 58 * 9 Then
If intY + 29 & 112 and intY + 29 & 112 + 58 or intY + 29 & 112 + 58 * 3 and intY + 29 & 112 + 58 * 4 or intY + 29 & 112 + 58 * 6 and intY + 29 & 112 + 58 * 7 Then
//三列一行
//三列二行
If intY + 29 & 112+58 and intY + 29 & 112 + 58*2 or intY + 29 & 112 + 58 * 4 and intY + 29 & 112 + 58 * 5 or intY + 29 & 112 + 58 * 7 and intY + 29 & 112 + 58 * 8 Then
//三列三行
If intY + 29 & 112+58*2 and intY + 29 & 112 + 58*3 or intY + 29 & 112 + 58 * 5 and intY + 29 & 112 + 58 * 6 or intY + 29 & 112 + 58 * 8 and intY + 29 & 112 + 58 * 9 Then
GetColor = GetPixelColor(intX+58*x1, intY+58*y1+29)
If getcolor = "FBE2E4" Then
MoveTo intX+58*x1, intY+58*y1+29
LeftClick 1
GetColor = GetPixelColor(intX+58*x2, intY+58*y1+29)
If getcolor = "FBE2E4" Then
MoveTo intX+58*x2, intY+58*y1+29
LeftClick 1
GetColor = GetPixelColor(intX+58*x1, intY+58*y2+29)
If getcolor = "FBE2E4" Then
MoveTo intX+58*x1, intY+58*y2+29
LeftClick 1
GetColor = GetPixelColor(intX+58*x2, intY+58*y2+29)
If getcolor = "FBE2E4" Then
MoveTo intX+58*x2, intY+58*y2+29
LeftClick 1
//重复结束---------------------------------------------
MoveTo 496, 672 //解除note模式
LeftClick 1
Goto 重新开始
Goto 第三步
已有帐号?
无法登录?
社交帐号登录}

我要回帖

更多关于 数独求解 的文章

更多推荐

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

点击添加站长微信