Skip to main content

一个简单的 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原生生成器来实现结果的快速生成;但是您必须了解问题本身非常复杂,并且结果的数量将随着更高的值作为参数呈指数增长。

下图可视化了这种结果的增长。

图形 描述
常数部分,递增 num y 轴:结果数
x 轴num参数
parts:常数 4
常数 num,递增部分 y 轴:结果数
x 轴parts参数
num:常数

安装

这个库可以通过pip install stacksplit.

Arch Linux

AUR 包将命名为python-stacksplit.

测试

运行 stacksplit 的测试:

然后你可以使用这些:

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

作者

项目详情


下载文件

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

源分布

stacksplit-0.0.0.tar.gz (46.0 kB 查看哈希)

已上传 source

内置分布

stacksplit-0.0.0-py2.py3-none-any.whl (5.4 kB 查看哈希)

已上传 py2 py3