跳转到主要内容

CLI用于解决组合棋盘游戏谜题。

项目描述

CLI用于解决组合棋盘游戏谜题。

稳定发布:最新发布 Python版本 软件许可证 需求新鲜度

开发: 单元测试状态 文档状态 覆盖率状态 代码质量

动机

这个项目最初是在2015年面试Uber软件工程职位时,我被要求解决的一个编码挑战。

面试过程结束后,我继续对这个代码进行修改,将其作为一个测试Python中一些优化策略的游乐场。现在它已经变成了我用来

示例

简单的3x3棋盘,有2个国王和一个车

$ chessboard solve --length=3 --height=3 --king=2 --rook=1
<SolverContext: length=3, height=3, pieces={'rook': 1, 'king': 2, 'queen': 0, 'bishop': 0, 'knight': 0}>
Searching positions...
┌───┬───┬───┐
│ ♚ │   │   │
├───┼───┼───┤
│   │   │ ♜ │
├───┼───┼───┤
│ ♚ │   │   │
└───┴───┴───┘
┌───┬───┬───┐
│   │   │ ♚ │
├───┼───┼───┤
│ ♜ │   │   │
├───┼───┼───┤
│   │   │ ♚ │
└───┴───┴───┘
┌───┬───┬───┐
│ ♚ │   │ ♚ │
├───┼───┼───┤
│   │   │   │
├───┼───┼───┤
│   │ ♜ │   │
└───┴───┴───┘
┌───┬───┬───┐
│   │ ♜ │   │
├───┼───┼───┤
│   │   │   │
├───┼───┼───┤
│ ♚ │   │ ♚ │
└───┴───┴───┘
4 results found in 0.03 seconds.

著名的八皇后问题,不打印解决方案以加快速度

$ chessboard solve --length=8 --height=8 --queen=8 --silent
<SolverContext: length=8, height=8, pieces={'rook': 0, 'king': 0, 'queen': 8, 'bishop': 0, 'knight': 0}>
Searching positions...
92 results found in 119.87 seconds.

巨大的组合问题可能需要一些时间来解决

$ chessboard solve --length=7 --height=7 --king=2 --queen=2 --bishop=2 --knight=1 --silent
<SolverContext: length=7, height=7, pieces={'rook': 0, 'king': 2, 'queen': 2, 'bishop': 2, 'knight': 1}>
Searching positions...
3063828 results found in 9328.33 seconds.

CLI允许生成性能图,以识别代码热点和瓶颈:。

$ chessboard solve --length=6 --height=6 --king=2 --queen=2 --bishop=2 --knight=1 --silent --profile
<SolverContext: length=6, height=6, pieces={'rook': 0, 'king': 2, 'queen': 2, 'bishop': 2, 'knight': 1}>
Searching positions...
23752 results found in 207.25 seconds.
Execution profile saved at /home/kevin/chessboard/solver-profile.png
Solver profiling graph

第三方

该项目包的样板代码来源于我为Scalewaypostal-address模块编写的代码,该模块以GPLv2+许可证发布。

CLI代码基于我为kdenlive-tools模块编写的代码,该模块以BSD许可证发布。

其他资源

v1.5.4(2017-08-11)的更改

  • 在调试模式下显示选定的日志级别。

  • 停止支持Mac OS X 10.9上的支持和单元测试。

  • 为Travis CI构建添加新的macOS 10.12目标。

  • 将要求提升到readme_renderer >= 16.0

  • 将安装说明移动到文档中。

  • 将性能页面移动到文档中。

  • 将CLI使用说明移动到文档中的独立部分。

  • 在Python 3.6中激活单元测试。

  • 在Travis作业中显示环境变量以进行调试。

  • 检查Travis作业中没有冲突的依赖项。

  • 在文档中显示软件包依赖关系图。

  • 修复在macOS + Python 3.3 Travis作业中升级setuptools的问题。

完整更改日志.

项目详细信息


下载文件

下载适合您平台的文件。如果您不确定选择哪个,请了解有关安装包的更多信息。

源分布

chessboard-1.5.4.tar.gz (226.4 kB 查看哈希值)

上传时间

构建分布

chessboard-1.5.4-py2.py3-none-any.whl (29.0 kB 查看哈希值)

上传时间 Python 2 Python 3

chessboard-1.5.4-py2.7.egg (24.9 kB 查看哈希值)

上传时间

支持