经过冬歇期之后一周的调试与改进,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。

本文由 最后的叶子 创作,转载或引用前请联系我们

相关文章:

  1. 欢迎大家来测试 – SDCal Pro beta发布
  2. 关于《生命游戏》和细胞自动机
  3. 学习使用GTK+ 0.概述
  4. 学习使用GTK+ 4.GTK+常用物件及API(窗口)
  5. “你们的hello world 都弱暴了 ”

2010年4月5日 星期一

10条评论

  • 匿名 说:

    嗯,嘻嘻,这个界面漂亮多啦。

    回复

    最后的叶子
    回复:

    你的意思是,你用过以前的版本?我记得beta和这个没什么区别吧……

    回复

  • wolf5x 说:

    dancing link 搜解很快…

    回复

    最后的叶子
    回复:

    重要的是,要把合理解题步骤显示出来。

    回复

    wolf5x
    回复:

    dlx搜的过程能体现合理解题步骤吧.
    一个格子如果只能填某一个数, 那么搜到这一步时, 肯定有一列只有1个1, 导致这个数所在的那行非选不可.

    回复

    最后的叶子
    回复:

    不过会有更复杂的推理方法哦。
    我觉得我用搜索法刻画不出更多推理方法了,而且我不会用搜索法估计题目难度。
    如果你有更好的方法的话,可以告诉我~

    回复

    wolf5x
    回复:

    觉得推理方法都能放在搜索的过程中, 只是要做的判断多一些. 换言之, 推理相当于剪枝函数, 局面难度就取决于搜索时被调用的剪枝函数数量和复杂度, 以及调用不同程度的剪枝时, 解决问题的步骤数, 等等. 本质和你现在用的策略一样, 我提出DLX只是因为这个数据结构会让搜索的效率高些, 编程复杂度低些…

    回复

    最后的叶子
    回复:

    嗯,谢谢。
    同意你以上分析。只不过我加的推理比较强,普通数独题还没进入搜索过程就已被解决了。我的设计思路其实是把搜索作为辅助工具,这样的话对步骤的把握和难度估计会更精准。

    回复

  • darkraven 说:

    有没有拿那些17-clue的试过?

    回复

    最后的叶子
    回复:

    试过几个,效率很出色。不过生成17效率很低。我知道该如何改进算法,但是目前我不想改,因为没人用,意义不大。

    回复

留下您的足迹

2010 f(Program,Poet)=Programet.
Powered by Wordpress. Theme by Pharmacy Drugs and LastLeaf.