一个简单的Python库,用于为给定高度的堆栈生成所有可能拆分的组合。
stacksplit的Python项目详细描述
堆叠分割
一个简单的Python库,用于为给定高度的堆栈生成所有可能拆分的组合。在
简介
这个库的目标是生成所有可能的组合,将给定的整数num
拆分成给定数量的部分;所有这些部分的总和也应是给定的num
。在
我们写这个简单的库是因为缺乏计算机科学理学学士学位讲座所需的功能。 最初的用例是计算和解决NIM游戏的扩展版本,其中硬币塔也可以分成多个更小的塔。在
使用
确保安装了stacksplit。在
导入stacksplit库:
importstacksplit
提供的函数是split并作为Python生成器实现;它接受2个(可选3个)参数:
num
:要拆分的整数parts
:零件数smallest
:最小部分应为>;=给定参数。此参数是可选,默认为1。在
每个调用都返回一个新的元组,该元组的所有元素的总和为num
。在
查看init和core中的doc_字符串和注释以获得帮助
示例
简单用法
importstacksplitforsinstacksplit.split(50,3):print(s)
输出:
(1, 1, 48)
(1, 2, 47)
...
更多选项
fromstacksplitimportsplitforiinsplit(50,3,10):print(i)
输出:
(10, 10, 30)
(10, 11, 29)
...
扩展用例
smallest
也可以为0或负数。结果的总和总是num
。在
fromstacksplitimportsplitforiinsplit(5,3,-1):print(i)
输出:
(-1, -1, 7)
(-1, 0, 6)
(-1, 1, 5)
...
性能
该库使用Python本机生成器来实现结果的快速生成;但是,您必须了解,问题本身非常复杂,并且结果的数量将以指数形式递增,并以较高的值作为参数。在
下面的图表显示了结果的增长。在
Graph | Description |
---|---|
y-axis: number of result x-axis: the ^{ ^{ | |
y-axis: number of results x-axis: the ^{ ^{ |
安装
此库可以通过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
- 运行tox测试:
pipenv run tox
(确保您有python-3.4到3.7的解释器)
注意: 通过用pip手动安装pip文件中的dev依赖项,可以使用普通的虚拟环境。(具体版本见Pipfile.lock文件)
作者
- 米切尔·奥伯劳赫-bloor.mo@protonmail.com
- 费利克斯沃纳-felix.wallner@protonmail.com
- 项目
标签: