一个简单的Python库,用于为给定高度的堆栈生成所有可能拆分的组合。

stacksplit的Python项目详细描述


堆叠分割

一个简单的Python库,用于为给定高度的堆栈生成所有可能拆分的组合。在

简介

这个库的目标是生成所有可能的组合,将给定的整数num拆分成给定数量的部分;所有这些部分的总和也应是给定的num。在

我们写这个简单的库是因为缺乏计算机科学理学学士学位讲座所需的功能。 最初的用例是计算和解决NIM游戏的扩展版本,其中硬币塔也可以分成多个更小的塔。在

使用

确保安装了stacksplit。在

导入stacksplit库:

importstacksplit

提供的函数是split并作为Python生成器实现;它接受2个(可选3个)参数:

  • num:要拆分的整数
  • parts:零件数
  • smallest:最小部分应为>;=给定参数。此参数是可选,默认为1。在
^{pr2}$

每个调用都返回一个新的元组,该元组的所有元素的总和为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本机生成器来实现结果的快速生成;但是,您必须了解,问题本身非常复杂,并且结果的数量将以指数形式递增,并以较高的值作为参数。在

下面的图表显示了结果的增长。在

GraphDescription
constant parts, increment numy-axis: number of result
x-axis: the ^{} parameter
^{}: constant 4
constant num, increment partsy-axis: number of results
x-axis: the ^{} parameter
^{}: constant

安装

此库可以通过pip install stacksplit安装。在

Arch Linux

AUR包将命名为python-stacksplit。在

测试

要运行stacksplit测试:

然后您可以使用这些:

  • 运行正常测试: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文件)

作者

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
MIME类型多部分/混合的java无对象DCH   Java Swing中单元格和列的间距   java为什么我不能使用For循环从集合中获取元素?   mysql Java餐厅计费系统   java MediaPlayer内存消耗   println Java添加的神秘输出:一些经过评估,一些经过打印   java我应该使用哪个对象?   PHP到Java论坛游戏集成   通过GeoNetwork上的java http post请求获取XML响应   java为什么类名与使用“==”的内部字符串比较冲突?   java反应。js如何定义自定义id,而不是在html中显示reactselect1value   java中的拼字数组   java如何使ScheduledExecutorService在其计划任务取消时自动终止   java查询未正确执行   IBatis+Java:检索HashMap   要读取的加密Java代码。txt文件并转换为二进制表示形式   Java Web Start应用程序自动加载   java Swing重写对象的paintComponent