一个使用暴力破解和普通逻辑算法解题的数独分析解题 SDK。
这个仓库的代码适用于下面这些人群:
- 喜欢钻研数独算法的人:如果你想要钻研数独有关的实现机制和背后运行机制的话,你可以在这个项目里找到对应的答案。
- 尝试学习 C# 有关特性的人:这个项目使用了一些较新的 C# 语言特性,并且你可以在这里学到一些 .NET 相关的技术,比如 Windows UI。
- 我自己:我自己会提前对之前想到的代码和算法进行一些实现,这样就防止我忘记它们的原理和处理规则。
- 题目生成
- 标准出题器
- 基于图案的出题器
- 基于难题图案的出题器
- 基于必含技巧的出题器
- 出题筛选器
- 解题
- 位运算算法
- 舞蹈链算法
- 回溯算法
- LINQ 算法
- 字典查询算法
- 分析题目
- 题目难度分析
- 题目步骤分析
- 卡点分析
- 直观技巧特殊支持(如余数性质等)
- 盘面差异 & 技巧使用分析
- 对部分超难和仅供研究的技巧的支持
- 绘图
- GDI+ 项目盘面绘图功能(增删绘图节点、盘面背景色配置、底部文字配置)
- UI 项目增量绘图性能优化
- 文本处理
- 各种盘面字符串导入导出
- JSON 可序列化众多数独相关数据结构
- 其他分析软件的兼容
- HoDoKu 所有技巧信息的集成,以及绝大部分技巧的实现
- Sudoku Explainer 绝大部分技巧信息的集成,以及绝大部分技巧的实现
- 直观技巧
- 同区九缺一(Full House)
- 同数九缺一(Last Digit)
- 排除
- 唯一余数
- 局标候选数技巧
- 直观区块(区块排除、区块唯一余数)
- 直观数组(数组排除、数组唯一余数)
- 全标候选数技巧
- 区块类技巧
- 区块
- 割补(LoL)
- 欠一数组(ALC)
- 烟花数组
- 数组
- 显性数组
- 死锁数组
- 区块数组
- 显性数组
- 隐性数组
- 隐性死锁数组
- 隐性数组
- 显性数组
- 鱼(含鱼鳍逻辑)
- 普通鱼
- 复杂鱼
- 宫内鱼
- 交叉鱼
- 链式同数结构
- 双强链
- 摩天楼
- 双线风筝
- 多宝鱼
- 空矩形(ER)
- 双强链
- 短链结构
- 规则 Wing(XY-Wing、XYZ-Wing 等)
- 不规则 Wing
- W-Wing
- M-Wing
- 其他(S-Wing、H-Wing、L-Wing)
- XYZ 环
- 致命结构
- 无条件致命结构
- 唯一矩形(UR)
- 唯一环(UL)
- 拓展矩形(XR)
- 探长致命结构
- 淑芬致命结构
- 唯一矩阵
- 唯一性提示信息覆盖(UCC)
- 条件致命结构
- 旋转致命结构
- 其他致命结构(规格 = 8)
- 其他
- 全双值格致死解法(BUG)
- 反转双数致命结构(反 BUG)
- 无条件致命结构
- 涂色(只有 API 支持)
- 简易涂色
- 色链规则
- 色分规则
- 简易涂色
- 链
- 非区块链
- 标准链(AIC)
- 连续环(CNL)
- 有名字的链
- 远程数对
- 标准远程数对
- 复杂远程数对
- 远程数对
- 区块链
- 区块链(GAIC)
- 区块环(GCNL)
- 节点重叠
- 绽放逻辑
- 绽放环
- 鳍逻辑
- 鳍链
- 区块鳍链
- 非区块链
- 强制链
- 区域强制链
- 单元格强制链
- 矩形强制链
- 全双值格致死解法强制链
- 动态链
- 线性动态链
- 线性动态链
- 线性动态区块链
- Bowman's Bingo
- 动态强制链
- 动态单元格强制链
- 动态区域强制链
- 动态矛盾强制链
- 动态二值矛盾强制链
- 线性动态链
- 待定数组(ALS)
- 链式待定数组
- 待定数组・双强链
- 待定数组・XY-Wing
- 待定数组・W-Wing
- 伪数组
- 对交空矩形
- 死亡绽放
- 单元格绽放
- 区域绽放
- n 次 ALS 绽放
- 链式待定数组
- 秩逻辑
- 0 秩逻辑
- 融合待定数组(SDC,标准类型、孤立数类型和自噬类型)
- 三维融合待定数组
- 多米诺环
- 网(MSLS)
- 负秩逻辑
- 守护者
- 双值死环(即死环)
- 三值死环(“三顺一逆”规则)
- 0 秩逻辑
- 飞鱼
- 初级飞鱼(JE)
- 高级飞鱼(SE)
- 双飞鱼
- 衰弱飞鱼(WE)
- 复杂飞鱼
- 复杂初级飞鱼
- 复杂高级飞鱼
- 对称性
- 宇宙(GSP,标准和反演类型)
- 枚举类技巧
- 均衡数组
- 爆破类技巧
- 图案叠加删数
- 模板
- 计算机试数(BF)
- 区块类技巧
其中的“不规则 Wing”技巧就是除了 Broken Wing(守护者)以外的所有名字带 Wing 的技巧类型。这些技巧一般长度为 5,三强两弱,只比双强链多了一个强链关系,因此在国内一般称为“短链结构”,包含 W-Wing、M-Wing、Hybrid-Wing、Local-Wing 和 Split-Wing 五种,以及一个叫 Purple Cow 的技巧(这个技巧名称特殊,但也归在这个范围之中)。其中,只有 W-Wing 单独有实现规则的代码,剩下的短链结构全部在“交替推导链”(即 AIC)的代码里实现。
当然,你可以复制这个仓库到你的账号下,然后做你想做的任何事情。你可以在基于 MIT 开源协议的情况下做你任何想做的事情。不过,由于 Gitee 是从 GitHub 拷贝过来的,所以 Gitee 项目暂时不支持任何的代码拉取请求,敬请谅解;不过这两个仓库都可以创建 issue。
另外,这个仓库可能会更新得非常频繁(大概一天至少一次代码提交),而备份过去的 Gitee 的仓库由于配置了 WebHook,因此在上传到 GitHub 的时候会自动同步过来。
实际上,每天至少一次更新的内容多数都是在重构代码,API 更进其实确实比较少。不过,数独游戏这种东西要想模拟人工解题算法的话,写代码的话就不容易看懂。我非常注重代码的整洁、代码的可读性,所以我要权衡算法的性能和可读性,找到一个平衡点。总之,敬请期待吧。
该项目比较特殊。该项目的代码使用到了 EmguCV 仓库里的 API 以及部分源代码。根据源仓库的开源协议规则和规范,该项目也需要严格遵守此点。因此它采用的是独立的开源协议。请查看该项目在仓库里的 LICENSE
文件。
本仓库的其他项目都采用 MIT 开源协议。MIT 开源协议意味着你需要在你的应用程序里声明本项目的作者信息。
为了建立好良好的讨论氛围和代码提交规范,本项目使用了默认规定的行为准则。请查看行为准则文件。
一个热爱开发的非开发人员。
如果要联系我,请查看 CONTACTS-zh-cn 文件了解我的联系方式。