前言:
此刻各位老铁们对“数独高效生成算法”大概比较关心,兄弟们都想要学习一些“数独高效生成算法”的相关内容。那么小编同时在网络上搜集了一些关于“数独高效生成算法””的相关文章,希望你们能喜欢,同学们一起来学习一下吧!各位朋友,你们好。
我最近分享了一些关于条件格式应用的例子,而且这些应用还不是常规的用法,我是想通过这些创意分享,让大家知道一个简单的工具,不仅可以实现很多奇特的效果,甚至还可以帮助我们做更多的事情,比如我今天要分享的:用条件格式解数独(既然说到了数独,肯定就不会只说条件格式,文章结尾有福利,喜欢数独的朋友注意哦)
上图的演示,是我很久以前制作的(那个时候还用的2003版Excel),今天我给大家说说这个效果是怎么做出来的(今天用的文件是增强版,增加了更多的功能,见下图)。
下面开始,步入正题:
表格布局设计
按上图所示,将A列至I列的列宽设置成1cm、1行至9行的行高设置成1cm,加上边框;
另外将表格的其他部分,也按图片所示,全部做好,然后进入下一步。
设置条件格式
1、先理清楚数独的规则
①每行、每列填入1到9的不重复数;
②每个小九宫格中,分别填入1到9的不重复数;
那么,我们就利用上面两个规则,作为设置表格的条件格式,让可以填写数据的位置自动现身。
比如:当第一行内已经有1了,第一行的其余空格,就不能再填写1,就是利用规则,把不能填写的格子排除掉,具备填写条件的格子凸显出来。
2、设置格式(所有的公式,在我分享的文件里都有,文章末尾有获取方法)
我们要设置三个提醒的条件格式:
①标注已有数字,用蓝色;②标注可填区域,用青色;③标记重复数,用红色(不符合规则的数,即错误结果)
我们来设置第一条:
①标注已有数字:选择A1:I9区域(注意活动单元格,什么是活动单元格:就是你选中一个区域后,输入内容,看内容出现在哪个单元格,那个单元格就是活动单元格,如图所示,A1就是活动单元格)。
选中区域后,在开始→样式→条件格式→新建规则→使用公式确定要设置格式的单元格→输入公式,设置格式(后续的都是这样操作,只是公式有差异,格式有不同。以后的内容不再赘述,就直接说公式了)
条件格式公式为:=A1=$O$5
这里的A1是活动单元格,O5是目前要填写的数。公式理解为:当活动单元格的数是,活动单元格填充蓝色。
这里还还需要注意:单元格绝对引用、相对引用、混合引用,可以查看我之前分享的文章。
下面的内容两个条件格式的公式,更要注意混合引用的使用。
②标注可填区域,用青色。设置的公式,直接看下图(注意红色加粗的内容):
③标记重复数,用红色。设置的公式,直接看下图(注意红色加粗的内容):
④,为了方便查看剩余未填写的数据,在L6至T8区域,也设置了条件格式(见下图),即当所有数都填写完成后,单元格由黄色填充变为无色。
制作完成
完成上面的操作,基础的表格制作和格式设置就完成,在A1至I9区域填入数独题目,选择本次填写的数字(下拉菜单中选),表格中就可以给予提示了,就可以像文章开始那样,解答数独了。
……分割线……到此,要分享的条件格式内容已完成,下面是关于数独的……分割线……
喜欢数独的朋友都知道,数独的解法很多,比如基础基础摒除法、区块摒除法、撑点定位法、唯一解法、唯余解法、唯一候选数法、余数测试法、矩形顶点法(X-Wing解法)等等。
上面的条件公式,只实现了基础基础摒除法、区块摒除法、撑点定位法这三种解法,所以还不够。
在这个文件中,除了用条件格式涉及到的三种解法,还通过VBA算法,增加了:
【余数测试法】即【测试解法】(测试解法会生成单元格批注,如果测试解法失败,需要删除批注,可以用【清除批注】功能);
【暴力解法】,顾名思义,就是从第一个空格第一种可能性开始,通过循环,遍历所有的可能性,直到找出正确的结果(此法特别耗时,尤其是在解高难度的题目时)。
【题库】:设置题目的,时为了方便导入其他的数独题目。
【随机出题】:电脑随机出题,但还不能设置难度,所出的题目,用以上的方法,基本都可以解开;
【题目还原】:如果解题失败,可以还原题目,从头再来。
【本题加入题库】、【从题库中删除】:对题库操作,增加或删除题目(对题目的操作,都在这里,不要在题库中操作)。需要注意:这里的删除题目,不是删除随机生成的题目,而是从题库中调用的题目,例如上图中选择的题库题目是题目2,即使选择题目之后又用电脑生成了题目,点【从题库总删除】按钮时,还是会删除题目2,放心,所有删除操作前,都有提示,可以在提示中取消删除。
没有设置保存进度的功能,是因为excel文件本省就可以保存数据,下次打开再接着玩就可以了。
另外,通过鼠标点击L6和T6区域的数字做选择,直接代替下拉菜单;且可以直接通过左键单击将数字录入数独中(只会在空单元格中填入,不会影响已填写的数据)。见下图:
导入题目的操作演示如下(演示生成题目的软件叫《数独博士》,是一款非常好用的数独游戏软件):
终极功能——专业算法解法(数独、VBA、Excel爱好者的福利)
这个工具代码的编写者,是圈子里一位非常非常非常厉害的老师(神一样的级别)。用这个专业算法,基本上不存在解不开的数独(多种结果的数独除,用其中某些工具时,可能会出现不停的循环,用的时候稍微注意下。)
这个表格里面,只有电脑出题,如果需要用这个解其他题目,可以用上面导入题目的方法,将数独题目导入到我做的文件中,然后复制粘贴过来,即可用这个工具解答。
写在后面
解数独,就像玩扫雷一样,计算的过程才是能带来成就感的,所以我目前都使用我自制的那个表格,用条件格式,配合余数测试法、实在不行加上暴力破解,来解答数独。专业算法解答,直接把答案显示出来了,反而失去了其中的意义。
好了。如果需要这个文件,可以关注我,然后私信发送【数独】,获取下载链接。
感谢各位朋友的支持。
标签: #数独高效生成算法