gpt4 book ai didi

python - 所有正整数元组

转载 作者:行者123 更新时间:2023-12-05 08:54:15 26 4
gpt4 key购买 nike

如何创建一个生成器来返回所有正整数组合的元组,例如生成三元组。

(1, 1, 1)
(2, 1, 1)
(1, 2, 1)
(1, 1, 2)
(2, 2, 1)
(2, 1, 2)
(2, 2, 2)
(3, 2, 2)
(2, 3, 2)
# and so on...

最佳答案

此代码使用与 Paul Hankin 类似的方法,但更通用,因为它会生成任何所需宽度的元组,而不仅仅是 3。

from itertools import combinations, count

def compositions(num, width):
m = num - 1
first, last = (-1,), (m,)
for t in combinations(range(m), width - 1):
yield tuple(v - u for u, v in zip(first + t, t + last))

def ordered_compositions(width):
for n in count(width):
yield from compositions(n, width)

# test

width = 3
for i, t in enumerate(ordered_compositions(width), 1):
print(i, t)
if i > 30:
break

输出

1 (1, 1, 1)
2 (1, 1, 2)
3 (1, 2, 1)
4 (2, 1, 1)
5 (1, 1, 3)
6 (1, 2, 2)
7 (1, 3, 1)
8 (2, 1, 2)
9 (2, 2, 1)
10 (3, 1, 1)
11 (1, 1, 4)
12 (1, 2, 3)
13 (1, 3, 2)
14 (1, 4, 1)
15 (2, 1, 3)
16 (2, 2, 2)
17 (2, 3, 1)
18 (3, 1, 2)
19 (3, 2, 1)
20 (4, 1, 1)
21 (1, 1, 5)
22 (1, 2, 4)
23 (1, 3, 3)
24 (1, 4, 2)
25 (1, 5, 1)
26 (2, 1, 4)
27 (2, 2, 3)
28 (2, 3, 2)
29 (2, 4, 1)
30 (3, 1, 3)
31 (3, 2, 2)

compositions 的算法源自维基百科文章 compositions 中用于计算作品数量的技术。 .这本质上是众所周知的 Stars and Bars 的变体。技术。

关于python - 所有正整数元组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50507419/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com