놓친 시드-EL에게 추가를 반복 조금 통과 :
def sum_to_n(n, size, limit=None):
"""Produce all lists of `size` positive integers in decreasing order
that add up to `n`."""
if size == 1:
yield [n]
return
if limit is None:
limit = n
start = (n + size - 1) // size
stop = min(limit, n - size + 1) + 1
for i in range(start, stop):
for tail in sum_to_n(n - i, size - 1, i):
yield [i] + tail
def n_sum(n):
ret_list = []
for s in range(1, n):
for m in sum_to_n(n, s):
ret_list.append(m)
ret_list.append([1]*n)
return ret_list
# You would use this as a command:
>>> n_sum(8)
[[8], [4, 4], [5, 3], [6, 2], [7, 1], [3, 3, 2], [4, 2, 2], [4, 3, 1], [5, 2, 1], [6, 1, 1], [2, 2, 2, 2], [3, 2, 2, 1], [3, 3, 1, 1], [4, 2, 1, 1], [5, 1, 1, 1], [2, 2, 2, 1, 1], [3, 2, 1, 1, 1], [4, 1, 1, 1, 1], [2, 2, 1, 1, 1, 1], [3, 1, 1, 1, 1, 1], [2, 1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 1, 1, 1, 1]]
'8 = 8'카운트입니까? –
아니요, 출력에 나타나면 문제가 없습니다. –