나는 이것 (아마도 내가 컴퓨터 프로그래밍을 처음 사용했기 때문에)에 아주 붙어있다. 내가 질문에서, 다음과 같은 코드가 있습니다 : [Python: Find all possible combinations of parts of a given number파이썬 : 숫자,리스트 길이, 처음과 마지막 숫자를주는 주어진 숫자의 부분들의 조합을 계산하는 방법
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
for partition in sum_to_n(8, 3):
print (partition)
[6, 1, 1]
[5, 2, 1]
[4, 3, 1]
[4, 2, 2]
[3, 3, 2]
은 매우 유용하지만 몇 가지 옵션을 설정하기 위해이를 수정하기 위해 노력하고있어.
이def sum_to_n(n,first, last, size, limit=None):
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):
if i <=first:
for tail in sum_to_n(n - i,first,last, size - 1, i):
ll=len(tail)
if tail[ll-1]==last:
yield [i] + tail
for i in sum_to_n(8,4,1,3):
if i[0]==4 and i[size-1]==1:
print(i)
if i[0]>4:
break
[4,3,1]
그러나 더 큰 정수로 프로그램입니다 : 나는이 목록의 첫 번째 숫자는 4와리스트의 마지막 내가이 솔루션을 사용하는 순간 1. 인 느릅 나무의 결과 만 갖고 싶어한다고 가정 원치 않는 많은 작업을 수행합니다. 예를 들어, for i in range(start, stop):
은 목록의 가능한 모든 첫 번째 숫자를 계산하며 "첫 번째"매개 변수가 내장되어 있지 않고 함수가 없으면 작동하지 않습니다. 요청 된 계산 만 수행하기 위해 필요한 매개 변수를 제공하는 함수를 호출하는 더 빠르고 더 나은 솔루션을 제안 할 수 있습니까?
를, 나는 같은 목록을 얻을 수 있지만 반대 순서로한다. 너는 실제로 너가 보여줄 명령을받는거야? –
아니요 예를 들어 실제 출력이 아닙니다 –