飞凤直观数独程序:
一个生成、解决数独的程序。
一、总说:
拿到一道数独题目,没有电脑,你会怎么做?
你会一一去建立一张完整的候选数表吗?
显然不会,否则的话,在你候选数表还没有建完的时候,别人有可能早已经作出答案了。况且,在建立表格的过程中,还难免会出错。
那你会怎么办呢?
直观解题!
本程序就是力图模拟人工智能,来解决数独问题。
所谓直观解题,就是不必去建立一张完整的候选数列表,而是只用笔和纸,通过各数之间的关系,依规则推导出结果。
目前,程序会破解难度在5以下的数独,如果再加上反证法,有时可能会达到6。
问题:数独难度深奥复杂,人工解题并不能解决所有数独。同时,为了不让直观解题变成“程序推算”,对于反证法,只是进行最简单的初步演算,没有进行只有电脑才有的“递归”。
二:飞凤直观数独的特色:
1、直观解题,图解标示,一目了然。
2、人工智能,步步解题,步步引导。
3、全新出题方式,共有5个等级,难易适合不同水平。
4、操作方便:回车键直观法解题;A、C分别显示答案和候选数;Ctrl+C和Ctrl+V复制粘贴棋盘。
5、配置了language.ini可实现多语言。程序内附有简体中文、繁体中文、台湾、英语等四种语言。用户可以自行更改或添加。
6、多种保存方式:可以保存成图片、文件、表格等等。
7、自动保存破阵英雄,并能再现破解信息。
8、内附数独题库,保存了众多异类阵式,用户也可添加各种题目。
9、点击列坐标,查看数字分布情况。
10、绿色软件,无需安装,不留垃圾。
11、需要C++解题源代码,来信说明。自由软件,随意使用,若能注明飞凤最好。
12、尝试了布局特定样式数独的功能。(效率不高)
13、程序中附有彩蛋功能,当你解题处于困境时,激活彩蛋功能,将会有意外收获。(鼠标左、右键点击列坐标I)
二、功能
一、使用方法:鼠标键移动,点击左键出现输放面板,也可以直接按1-9输入。
二、导出:当导出为Txt类型文件时,可以直接打印。若要将其导向WORD,要适当进行排版:将表格字体选为“宋体”,大小为“小四”,行距选固定值,并设为9,也可以字体选“宋体”,大小为“小五”,行距选固定值并设为9,这样就可以一个完整表格。
三、程序定义了一个外部数据接口。用户可以把其它各种奇形怪状的数据数据存放在文件ShuDuKu.Txt文件中,格式要求见该文件。
四、用户布局:可以将数独或其他字符输入,若全为数字且有唯一解,直接返回,此时相当于用户输入题目。输入完成后,点击开始探测,若找到解会提示。若要停止,先点停止探测,后再点击“返回”,程序将返回原来题目状态。需要说明的是,并不是所有的布局都能找到唯一解。
//=======================================================================================
关于人工解题代码的说明:
最终完成人数独人工解题。
解题代码,并不是采用候选数方式,而是人工思维,解题过程,并不是一下给出全部答案,而是一步一步的人工推导。每一步的解题都是模拟人工思考,并用图示进行标注,可以一目了然。
程序解题技巧:行唯一解、列唯一解、小九宫唯一解、隐含唯一解、数对排除法、隐藏数对排除法、三链数、四链数排除法、隐藏三链数、四链数排除法、矩形排除法。(解题名称在程序中都是采用唐诗来命名的。在此考虑到大家较为熟悉候选数解题名称,所以代以候选数名称来代称。)
解题方法里也部分使用的候选法作为人工智能的辅助,它们是xy-wing、xyz-wing、单链法。这些候选数法相对简单些,加上程序用图标直观标注,对于用户提高解题技巧大有益補。
但有时会碰到高级、直观法难解的题目,程序也是采用人工思维——反证法。而且,反证也并非采用递归方式,因为递归也不是人工思维的结果。
解题源代码均采用纯C++,并附有详细的说明,有需要的朋友可与本人联系。FF06280209@163.com.
lmq
2012-02-09
|