# puzzle-solving-machine **Repository Path**: billysir/puzzle-solving-machine ## Basic Information - **Project Name**: puzzle-solving-machine - **Description**: 填数字游戏通用解题机。基础引擎+自行扩展理论上可支持全部填数字游戏,带有3阶幻方、船队谜题、八皇后问题、数独等4个示例。只支持“填”不支持“移动“,比如移动火柴的游戏就不在支持的范围内。 - **Primary Language**: Python - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 2 - **Forks**: 1 - **Created**: 2021-06-05 - **Last Updated**: 2025-05-28 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # puzzle-solving-machine #### 介绍 填数字游戏通用解题机。 基础引擎+自行扩展理论上可支持全部填数字游戏。 带有 3阶幻方、船队谜题、八皇后问题、数独 等4个示例。 只支持“填”不支持“移动“,比如移动火柴的游戏就不在支持的范围内。 #### 软件架构 为了解决全部的填数字游戏,本引擎由以下部分组成: 1. 棋子。即要填的数字,棋子有name和value属性。类名Chess 2. 棋盘。即游戏的舞台,主要由若干个棋格组成。类名ChessBoard 3. 棋格。即棋盘上的格子,一个格子可以落一棋子。类名Cell 4. 棋盒。不在棋盘上的棋子都在棋盒中,棋盒还保存着各种棋子的可用数量。类名ChessBasket 5. 规则。请注意不是真的在下棋,而是在解题。规则是特殊的棋格,它可以进行各种限制,比如3阶幻方就要求每行的和是15,每行都与一个规则棋格对应。基类名Rule 已提供的规则有: SumRule 和的规则 SumRangeRule 和的范围规则 UniqueRule 不重复规则 6. 维度转换。系统默认是一维的棋格集合,有了维度转换才能解决各种维度的题,目前提供了二维的转换。类名T2D #### 使用说明 ##### 我想运行一下看看 1. 如果没有Python3环境,则先安装Python3 2. 下载本项目zip包,并解压到你喜欢的文件夹 3. 从main.py开始执行,以Windows为例,具体做法是: 3.1 在含有main.py的资源浏览器(我的电脑)的地址栏输入cmd并按回车键 3.1 输入python main.py并按回车键 4. 顺利的话,你就可以看到程序依次解决了示例的4个谜题 ##### 我想解决具体的游戏 1. 仿照示例 2. 必要时新建自己的Rule类,从Rule继承,并override validate和can_fill方法,请注意can_fill方法写得好能大大减少运算量 3. 如果是二维结构,使用T2D类进行维度转化,必要时扩展T2D的功能 4. 如果是大于二维结构,请依照T2D造出具体维度与一维的转化类。比如3维是T3D。 ##### 我想改进引擎 - 请看参与贡献 #### 参与贡献 1. Fork 本仓库 2. 新建 Feat_xxx 分支 3. 提交代码 4. 新建 Pull Request 示例中提到的“船队谜题”见下图 ![输入图片说明](https://images.gitee.com/uploads/images/2021/0801/001217_8801edd4_1180401.jpeg "fill_prb.jpg")