SDCal Pro 正式发布!
经过冬歇期之后一周的调试与改进,SDCal Pro正式版发布了!先给一个截图:

如果你还没明白SDCal Pro为何物,你可以前往以前的博文《欢迎大家来测试 – SDCal Pro beta发布》或者看看这篇博文的缩略版:
SDCal是我在高二完成的一个数独解答程序,能提供对于某个数独问题的求解(所有解),或单步求解,显示求解的步骤。
从去年11月开始,我开始编写SDCal的改进版,SDCal绝大部分被重写。我把它称作SDCal Pro,相当于SDCal的2.0版。12月份由于期考等各种事务,工作停滞。终于,经过努力,SDCal Pro beta发布了。
SDCal有了很大的改进,主要如下:
- 有一个不错的图形界面,用Gtk+编写。数独编辑功能强大。
- 支持估计数独题难度。
- 可以显示解题步骤。
- 加入了数独生成算法,可以根据设定的难度范围,随机生成数独。但是效率还有改进的余地。
- 多操作系统支持。
现在,SDCal Pro已针对测试者提出建议进行了修改,并加入了中文支持(如果你希望看看我蹩脚的英文的话,你需要使用英文操作系统或用其他一些技术手段)。界面也进行了一定的修改,但仍然使用Gtk+和libglade组织。核心算法未做任何改变,只是清理了代码,算法在前面提到的那篇博文中已有初步描述:
SDCal算法分为两个部分:sdcal和sdcreate。
sdcal用于数独求解。它使用一组算法来得到数独的解,其中主干部分是逻辑推理(模拟算法),此外还使用guessing(搜索算法)加以辅助。这个模块可以得到以很快的速度得到数独的多个解。目前,sdcal求得数独解的上限被设定为99。sdcal包含数独难度估计算法,它分析解题时每一步的难度,并将整个数独题难度记为每一步难度的总和。
sdcreate用于生成数独问题。它依赖于sdcal。sdcreate首先生成一个多解、很难的数独题,使用sdcal求解并估计难度,最后设法将题目变为单一解、难度适中的题目。sdcreate支持自定义题目难度范围、空格数、对称性等参数,并过滤掉不符合要求的问题;但是过滤是个漫长的过程,这降低了sdcreate的效率。
SDCal Pro正式版已发布在http://sdcal.sf.net。这一次释放了源代码和Windows版安装程序,其中安装程序包含Gtk+和libglade运行库,安装程序会检测Gtk+是否已安装(这个检测不准确,所以安装Gtk+是可选的)。如果希望在其他系统中编译,则系统中必须包含库libgtk2.0-dev,libglade2.0-dev。
好了,不说太多。接下来是固定栏目:
感谢
SDCal 1.0测试者:Sherry Zhou。
SDCal Pro Alpha测试者:严酷的魔王(其实这个不用感谢),时间矢,Liangent,王主任。
数独事业关注者:rombalance,WYZ。
本文由 最后的叶子 创作,转载或引用前请联系我们。
相关文章:
嗯,嘻嘻,这个界面漂亮多啦。
回复
你的意思是,你用过以前的版本?我记得beta和这个没什么区别吧……
回复
dancing link 搜解很快…
回复
重要的是,要把合理解题步骤显示出来。
回复
dlx搜的过程能体现合理解题步骤吧.
一个格子如果只能填某一个数, 那么搜到这一步时, 肯定有一列只有1个1, 导致这个数所在的那行非选不可.
回复
不过会有更复杂的推理方法哦。
我觉得我用搜索法刻画不出更多推理方法了,而且我不会用搜索法估计题目难度。
如果你有更好的方法的话,可以告诉我~
回复
觉得推理方法都能放在搜索的过程中, 只是要做的判断多一些. 换言之, 推理相当于剪枝函数, 局面难度就取决于搜索时被调用的剪枝函数数量和复杂度, 以及调用不同程度的剪枝时, 解决问题的步骤数, 等等. 本质和你现在用的策略一样, 我提出DLX只是因为这个数据结构会让搜索的效率高些, 编程复杂度低些…
回复
嗯,谢谢。
同意你以上分析。只不过我加的推理比较强,普通数独题还没进入搜索过程就已被解决了。我的设计思路其实是把搜索作为辅助工具,这样的话对步骤的把握和难度估计会更精准。
回复
有没有拿那些17-clue的试过?
回复
试过几个,效率很出色。不过生成17效率很低。我知道该如何改进算法,但是目前我不想改,因为没人用,意义不大。
回复