龙空技术网

条件格式的另类用法——解数独「文末有福利」

上班下班 773

前言:

此刻各位老铁们对“数独高效生成算法”大概比较关心,兄弟们都想要学习一些“数独高效生成算法”的相关内容。那么小编同时在网络上搜集了一些关于“数独高效生成算法””的相关文章,希望你们能喜欢,同学们一起来学习一下吧!

各位朋友,你们好。

我最近分享了一些关于条件格式应用的例子,而且这些应用还不是常规的用法,我是想通过这些创意分享,让大家知道一个简单的工具,不仅可以实现很多奇特的效果,甚至还可以帮助我们做更多的事情,比如我今天要分享的:用条件格式解数独(既然说到了数独,肯定就不会只说条件格式,文章结尾有福利,喜欢数独的朋友注意哦)

条件格式解数独演示

上图的演示,是我很久以前制作的(那个时候还用的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爱好者的福利)

数独解法大全

这个工具代码的编写者,是圈子里一位非常非常非常厉害的老师(神一样的级别)。用这个专业算法,基本上不存在解不开的数独(多种结果的数独除,用其中某些工具时,可能会出现不停的循环,用的时候稍微注意下。)

这个表格里面,只有电脑出题,如果需要用这个解其他题目,可以用上面导入题目的方法,将数独题目导入到我做的文件中,然后复制粘贴过来,即可用这个工具解答。

写在后面

解数独,就像玩扫雷一样,计算的过程才是能带来成就感的,所以我目前都使用我自制的那个表格,用条件格式,配合余数测试法、实在不行加上暴力破解,来解答数独。专业算法解答,直接把答案显示出来了,反而失去了其中的意义。

好了。如果需要这个文件,可以关注我,然后私信发送【数独】,获取下载链接。

感谢各位朋友的支持。

标签: #数独高效生成算法