最小値(0,0,0,0)と最大値(2,1,3,2)を持つ長さ4のベクトルが与えられたとします。この範囲内で、合計が5になるすべての整数ベクトルを見つけたいと思います。
次のコードはそれを実現します:
maxvalues = (2,1,3,2)
k = 5
t = []
for x1 in range(maxvalues[0]+1):
for x2 in range(maxvalues[1]+1):
for x3 in range(maxvalues[2]+1):
for x4 in range(maxvalues[3]+1):
if x1+x2+x3+x4 is k:
t.append((x1,x2,x3,x4))
ただし、このコードはより大きなベクトルにあまり一般化されておらず、少し非効率的です。誰かがこれを一般化する良い方法を持っていますか?
編集:わずかな間違い、ifステートメントを忘れた