CLI用于解决组合棋盘游戏谜题。
项目描述
CLI用于解决组合棋盘游戏谜题。
动机
这个项目最初是在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
第三方
该项目包的样板代码来源于我为Scaleway的postal-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 查看哈希值)
chessboard-1.5.4-py2.7.egg (24.9 kB 查看哈希值)
关闭
chessboard-1.5.4.tar.gz的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 7cab8f693e26a6ea1f381e898ff51ebd303daf1ac3f0d77254e83e87e99b6eb5 |
|
MD5 | ae32b7f41f34fe543c688a021a03e461 |
|
BLAKE2b-256 | 2d7539bc4fa5af5e72abbb1ce067dfa907f580087b82e55362f6127d27719df0 |
关闭
chessboard-1.5.4-py2.py3-none-any.whl的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 7a4cacd4e77d98fa93f05f047b6379e7c7dbed9808f67407a69b907952e423cc |
|
MD5 | 6b26a36257a6b329a0c7d03cfae928f3 |
|
BLAKE2b-256 | ca0f14ee176469309d389a27288633174299ab7ebac78ee4474b9a801d30325b |
关闭
chessboard-1.5.4-py2.7.egg的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 703052428152d808a51b8a1cd22506f8ef20b8e1e09ba11b5f80fcffcb55acb8 |
|
MD5 | 3bbf190e8e943494110982bdf5452266 |
|
BLAKE2b-256 | 193b76052c79f9713ccca76b06613a04b93d65af435dd7dd86017459b80cac58 |