同じ値に等しい特定の制限を持つフィボナッチ数列の要素と合計のすべての組み合わせを見つける方法を探しています。combinations()
そのような問題を解決するにはfromitertools
が最善の策であることは知っていますが、Python は初めてなので、一致する組み合わせを保持する方法を知りたいです (アルゴリズムの終わりではないため、1 つだけが正しいため)。
私は現在持っています:
# 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
これで、2 番目のビットが多くの点で間違っていることがわかりました。また、タプルを整数に追加しようとするという間違いを犯します。itertools モジュールを使用して、これらの組み合わせの個別の要素を個別に反復処理する方法を知る必要があります。合計「n」との組み合わせだけが役に立ちます。