一个简单的 Python 库,用于为给定高度的堆栈生成所有可能的拆分组合。
项目描述
堆栈拆分
一个简单的 Python 库,用于为给定高度的堆栈生成所有可能的拆分组合。
介绍
该库旨在生成所有可能的组合,以将给定整数拆分为给num定数量的部分;所有这些部分的总和将再次被给定num。
我们编写了这个简单的库,因为我们的计算机科学学士学位课程缺乏此类功能。最初的用例是计算和解决 NIM 游戏的扩展版本,其中硬币塔也可以分成多个较小的塔。
用法
确保安装了 stacksplit。
导入 stacksplit 库:
import stacksplit
提供的函数是拆分的,并作为 Python 生成器实现;它需要 2 个(可选 3 个)参数:
num: 要拆分的整数parts:零件数量smallest:最小部分应 >= 给定参数。此参数是可选的,默认为 1。
split(num, parts, smallest)
每次调用都会返回一个新元组,其中包含一个新组合,所有元素的总和为num.
查看 init 和 core 中的 doc_strings 和注释以获取帮助
例子
简单使用
import stacksplit
对于 s 在 stacksplit中。拆分( 50 , 3 ):
打印( s )
输出:
(1, 1, 48)
(1, 2, 47)
...
更多选择
from stacksplit import split
for i in split(50, 3, 10):
print(i)
输出:
(10, 10, 30)
(10, 11, 29)
...
扩展用例
smallest也可以为 0 或负数。结果总和为num。
from stacksplit import split
for i in split(5, 3, -1):
print(i)
输出:
(-1, -1, 7)
(-1, 0, 6)
(-1, 1, 5)
...
表现
该库使用Python原生生成器来实现结果的快速生成;但是您必须了解问题本身非常复杂,并且结果的数量将随着更高的值作为参数呈指数增长。
下图可视化了这种结果的增长。
| 图形 | 描述 |
|---|---|
| y 轴:结果数 x 轴: num参数parts:常数 4 |
|
| y 轴:结果数 x 轴: parts参数num:常数 |
安装
这个库可以通过pip install stacksplit.
Arch Linux
AUR 包将命名为python-stacksplit.
测试
运行 stacksplit 的测试:
- 安装 pipenv ( https://pypi.org/project/pipenv/ )
- 克隆此存储库
- 在这个存储库中运行
pipenv install --dev
然后你可以使用这些:
- 运行正常测试:
pipenv run python setup.py test - 运行覆盖率测试:
pipenv run python setup.py test --coverage - 运行毒物测试:(
pipenv run tox确保你有 python 的解释器 - 3.4 到 3.7)
注意:可以通过使用 pip 手动从 Pipfile 安装开发依赖项来使用普通的虚拟环境。(有关确切版本,请参阅 Pipfile.lock)
作者
- Micheal Oberrauch - bloor.mo@protonmail.com
- 费利克斯沃尔纳- felix.wallner@protonmail.com
项目详情
关
stacksplit -0.0.0.tar.gz 的哈希值
| 算法 | 哈希摘要 | |
|---|---|---|
| SHA256 | 64eac9383e37e695b07dffec87c0edfae54bd201ab0cdabd00ceb689aa96b5e4 |
|
| MD5 | 640ce9bacc9dfd321b6bf2a99da7f833 |
|
| 布莱克2-256 | d6c193e3beba162d4199f01c37e3328a5a48863fd819fff6bdbdd73b5f8718ff |
关
stacksplit -0.0.0-py2.py3-none-any.whl 的哈希值
| 算法 | 哈希摘要 | |
|---|---|---|
| SHA256 | e2b268bde1fea699664bb9c2798f7a2faa735d1b43eb3217ad0c1c4bd8b393b9 |
|
| MD5 | 789ffb57503f7f068cfd0d1b97027677 |
|
| 布莱克2-256 | 32e673c3d028c545a2bc68386fd8fa94ad897eb4138fdae141dbbd3a93afb8f3 |