/java_sudoku

标准数独解答器 同时支持抽象/异形数独(摒除法+枚举 没做区块排除)

Primary LanguageJava

数独库解答器

昨天有人问我数独【其中一道题已经硬编码在代码中了】 :-)

以前的C++的版本就有不下5个,VB页有不下5个,然后就一时兴起,练练java顺便写一下

以前的算法中的区块排除在这次的java实现中没有

写了之后感受就是 不用自己管理 new delete 好爽,但 没有指针的*看着好不习惯,以及使用指针无法像C++那么暴力,写的时候算法时间 空间复杂程度也估计不好。

以及 以前的C++ VB实现的都没文档,所以还是打算写个 假装像一个文档的东西

关于代码

Main.java里面 是对一个标准的数独的使用demo,只修改Main.java类似的支持4×4,16×16,25×25的数独

StandardSudoku.java里面 是把标准数独用抽象解决器表达,修改该类 类似可以支持 武士数独等异形数独,同时可以对多解数独(我是拒绝这个词的)进行解答(caculate的参数为答案上限,负值表示所有)。

sudokuabstractsolver.java里面 是算法核心,感觉还有修改的空间 比如加上区块,但暂时并没想好如何在 抽象的结构中表示区块。

关于Exception做得很简陋 无限向上抛出:-)