ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 Excel Home精品图文教程库
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
300集Office 2010微视频教程 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 3206|回复: 19

[原创] 全民数独解题v.201805061129 增加了第二种递归解法

[复制链接]

TA的精华主题

TA的得分主题

发表于 2018-5-6 11:53 | 显示全部楼层 |阅读模式
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
本帖已被收录到知识树中,索引项:娱乐和游戏应用
本帖最后由 flyge 于 2018-5-9 03:41 编辑

数独解题v.201805061129  v后面是时间增加了第二种递归解法,就是自己调用自己后附代码,思路仅供参考


=======================================
2018年5月9日更新为
数独.v.201805090242
v后面是时间
非常抱歉,之前的v.201805061129 递归有问题
修改了,第二种方法加入了递归的层级控制,在时间允许范围内像二叉树那样从1层往n层做尝试。

解法说明一下,我是在玩全民数独时,发现一些规律,
1.用一个有的来排除别的格子里的可能值
2.横竖宫三种情况单独的某种情况下,n格中只有n种数字的话除了这n格外其他的9-n格中不应该再有这n个数字的任何一个,(我只做了n=2的情况)
3.横宫 或 竖宫 ,交叉有3格,拿横宫交叉情况举例,如果有某个数只出现在 横的情况中的3格中,那么这个数字也只能在宫的情况中的这3格中,因此要消除宫的其他6格中的这个数字。(哈哈哈,这个也没做)
4.接下来就猜了,找个只剩下2个可能性的,先猜一个,重复上面的,如果错了(最后会出现重复)就换另外的。没错就继续,如果一开始没错又继续不下去了就退回来换一个,一般换一个算下来就会出错,这样就退回去换回来,这是手工解的时候用的方法,能解游戏的最高级别的数独。
vba里先用1.2.的方法解,再在4中暴力方法,4.中用了1.2.的方法,未解就调用自己的递归方法形成二叉树的样子,然后控制一下递归的层级和整个的用时。












补充内容 (2018-5-14 20:46):
更新:数独.v.201805142006

补充内容 (2018-5-16 21:39):
最新版本是数独.v.201805160919

开始界面,有两种解第一种用了两种控件

开始界面,有两种解第一种用了两种控件

第二种方法解

第二种方法解

这是解题时展示的经过

这是解题时展示的经过

数独.v.201805061129.zip

223.96 KB, 下载次数: 48

数独.v.201805061129

数独.v.201805090242.zip

226.82 KB, 下载次数: 26

数独.v.201805090242

TA的精华主题

TA的得分主题

 楼主| 发表于 2018-5-14 20:43 | 显示全部楼层
=======================================
2018年5月14日更新为数独.v.201805142006
v后面是时间

本次改进:
在step2或者step2_2时加入事前判断,是否step1就已经解答出的情况。
因为简单的反而进入递归循环中直到溢出。

=======================================
2018年5月9日更新为
数独.v.201805090242
v后面是时间
非常抱歉,之前的v.201805061129 递归有问题
修改了,第二种方法加入了递归的层级控制,在时间允许范围内像二叉树那样从1层往n层做尝试。

解法说明一下,我是在玩全民数独时,发现一些规律,
1.用一个有的来排除别的格子里的可能值
2.横竖宫三种情况单独的某种情况下,n格中只有n种数字的话除了这n格外其他的9-n格中不应该再有这n个数字的任何一个,(我只做了n=2的情况)
3.横宫 或 竖宫 ,交叉有3格,拿横宫交叉情况举例,如果有某个数只出现在 横的情况中的3格中,那么这个数字也只能在宫的情况中的这3格中,因此要消除宫的其他6格中的这个数字。(哈哈哈,这个也没做)
4.接下来就猜了,找个只剩下2个可能性的,先猜一个,重复上面的,如果错了(最后会出现重复)就换另外的。没错就继续,如果一开始没错又继续不下去了就退回来换一个,一般换一个算下来就会出错,这样就退回去换回来,这是手工解的时候用的方法,能解游戏的最高级别的数独。
vba里先用1.2.的方法解,再在4中暴力方法,4.中用了1.2.的方法,未解就调用自己的递归方法形成二叉树的样子,然后控制一下递归的层级和整个的用时。



5-1ok.jpg
5-1经过.jpg
5-1.jpg
1输入.jpg

数独.v.201805142006.zip

276.91 KB, 下载次数: 9

数独.v.201805142006

TA的精华主题

TA的得分主题

 楼主| 发表于 2018-5-16 21:37 | 显示全部楼层
=======================================
2018年5月16日更新为数独.v.201805160919
v后面是日期时间

本次改进:
加入颜色标识,显示题目本身加入一个题 被网上“戏称为”世界最难题的数独题目
=======================================


被网上“戏称为”世界最难题的数独题目

被网上“戏称为”世界最难题的数独题目

数独.v.201805160919.zip

284.04 KB, 下载次数: 17

TA的精华主题

TA的得分主题

发表于 2018-5-6 17:52 | 显示全部楼层
可以理解为 棋盘与棋子的关系。
1、棋盘 9*9 格子,
2、棋子 1--9 。

建立一个棋盘数组 sj(1 to 81), 除以9 可取行号、列号。
或者 sg(1 to 256),除以16 运算速度更快。

TA的精华主题

TA的得分主题

发表于 2018-5-7 14:02 | 显示全部楼层
你这是暴力解法 ,还是模仿人的思考 一步步填?

TA的精华主题

TA的得分主题

发表于 2018-5-7 22:47 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
根据网上的一个数独题目,实现按数独规则 解题的目的:
1、红色字体 为最初的 提示数;
2、4个黄色单元格 是5的 隐藏环,即X-WING结构;(此题的关键)
3、通过三个 按钮 的  提示分析 ,一步步 引导完成 数独的 填写。

数独X-Wing.rar (12.85 KB, 下载次数: 12)

TA的精华主题

TA的得分主题

发表于 2018-5-7 22:56 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
解题至此,陷入困局,应用高级技巧X-WING判断:
   5 必出现在4个黄色单元格中的 2个对角位,
    R3C8的候选数 45 从而 确定为 4 ,后面答题过程 水到渠成。

331.JPG

TA的精华主题

TA的得分主题

发表于 2018-5-7 23:13 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2018-5-7 23:18 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2018-5-8 11:42 | 显示全部楼层
数独做到差不多的时候 ,感觉无路可走 ,避免不了 试算(二选一),才能继续 ?

TA的精华主题

TA的得分主题

发表于 2018-5-8 16:56 | 显示全部楼层
用VBA暴力解数独,差不多也是我最快吧。

迭代计算,冲突时回溯。数组或递归都可以做到。

TA的精华主题

TA的得分主题

 楼主| 发表于 2018-5-9 03:36 | 显示全部楼层

非常抱歉,之前的递归有问题,改好了,数独.v.201805090242

非常抱歉,之前的递归有问题,数独.v.201805090242
修改了,第二种方法加入了递归的层级控制,在时间允许范围内像二叉树那样从1层往n层做尝试。

解法说明一下,我是在玩全民数独时,发现一些规律,
1.用一个有的来排除别的格子里的可能值
2.横竖宫三种情况单独的某种情况下,n格中只有n种数字的话除了这n格外其他的9-n格中不应该再有这n个数字的任何一个,(我只做了n=2的情况)
3.横宫 或 竖宫 ,交叉有3格,拿横宫交叉情况举例,如果有某个数只出现在 横的情况中的3格中,那么这个数字也只能在宫的情况中的这3格中,因此要消除宫的其他6格中的这个数字。(哈哈哈,这个也没做)
4.接下来就猜了,找个只剩下2个可能性的,先猜一个,重复上面的,如果错了(最后会出现重复)就换另外的。没错就继续,如果一开始没错又继续不下去了就退回来换一个,一般换一个算下来就会出错,这样就退回去换回来,这是手工解的时候用的方法,能解游戏的最高级别的数独。
vba里先用1.2.的方法解,再在4中暴力方法,4.中用了1.2.的方法,未解就调用自己的递归方法形成二叉树的样子,然后控制一下递归的层级和整个的用时。

数独.v.201805090242.zip

226.82 KB, 下载次数: 7

您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

关闭

最新热点上一条 /1 下一条

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-4-25 19:37 , Processed in 0.047721 second(s), 12 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表