Я ищу способ найти все комбинации сумм с элементами последовательности Фибоначчи с заданным пределом, который равен тому же значению. Я знаю, что combinations()
от itertools
- наша лучшая ставка для решения таких проблем, но поскольку я новичок в Python, мне нравится знать, как я могу сохранить совпадающие комбинации (поскольку только один правильный, поскольку это не конец алгоритма).Итерации через комбинации сумм в Python 3
я в настоящее время:
# Call Fibonacci sequence with a given limit:
def fib1(n):
result = []
a, b = 1, 1
while a < n:
result.append(a)
a, b = b, a + b
return result
# Wrong code, skeleton:
def zeckendorf(n):
from itertools import combinations
seq = fib1(n)
row = []
sum = 0
for i in combinations(seq, len(seq)):
sum += i
row.append(i)
if sum > n:
sum = 0
row = []
continue
elif sum == n:
break
return row
Теперь я знаю, что второй бит неправильно во многих отношениях. Кроме того, я делаю ошибку, чтобы попытаться добавить кортежи в целые числа. Мне просто нужно знать, как я могу перебирать отдельные элементы этих комбинаций отдельно, используя модуль itertools. Полезны только комбинации с суммой «n».
Я думаю, что вы ищете функцию 'itertools.permutations', b ecause 'сочетания (seq, len (seq))' имеет только 1 элемент, сам 'seq'. От doc до 'комбинаций': * Возвращает r подпоследовательности элементов из входного итерабельного. * Существует только 1 подпоследовательность с длиной всей последовательности, и это сама последовательность. – halex
Я уверен, что ищу комбинации. Поскольку не все элементы должны использоваться. Каждое целое число может быть выражено как сумма чисел Фибоначчи по значению целого числа. И эти числа Фибоначчи могут использоваться только один раз. –
Во всяком случае, мой код не имеет смысла, и я знаю об этом. Моя основная проблема заключается в том, чтобы узнать, как работает модуль itertools. Я также думаю, что это сложно проверить в оболочках Python, это одно. Например, –