今私は、ゼロより大きく、値より小さい数を使って、値の合計の組み合わせの数を見つけることができるコードを持っています。 値を変更して、それらの値が単なる値以上になるように組み合わせを展開する必要があります。例えば100 = 1にするにはどうすればよいですか? (説明内)
: 番号10の結果をもたらす: [1、2、3、4]、[1、2、7]、 [1、3、6]、[1、4、5] 、 [1、9]、[2,3,5]、[2,8]、 [3,7]、[4,6] しかし、これを1に崩壊する任意の数値よく本質的には、数字= n内の個々の数字の合計で100 = nが必要です。したがって、この場合100 = 1 + 0 + 0 = 1であるため100 = 1 したがって、数字1999は、1999 = 1 + 9 + 9 + 9 = 28であるためvalue = 100のリストとして有効な組み合わせになります。 282 = 2 + 8 = 10、10 = 1 + 0 = 1
これで無限の組み合わせが得られることに気がついたので、データを取得したい範囲に制限を設定する必要があります。これは私の組み合わせを見つけるために使用している現在のコードです。
def a(lst, target, with_replacement=False):
def _a(idx, l, r, t, w):
if t == sum(l): r.append(l)
elif t < sum(l): return
for u in range(idx, len(lst)):
_a(u if w else (u + 1), l + [lst[u]], r, t, w)
return r
return _a(0, [], [], target, with_replacement)
for val in range(100,101):
s = range(1, val)
solutions = a(s, val)
print(solutions)
print('Value:', val, "Combinations", len(solutions))
私たちにとってあなたの質問は何ですか? –
私は、単一の整数に崩壊する数の組み合わせを見つけることを試みています。だから、n = 124は7に崩壊するでしょう。なぜなら、数= 7,1 + 2 + 4 = 7の整数の合計が7になるからです。この場合、数字124はn = 7に対して有効な組み合わせになります。もう1つの許容可能な組み合わせは、整数が7,6 + 0 + 1 = 7になるためです.Sameは余分な1285は1 + 2 + 8 + 5 = 16であり、1 + 6 = 7となるので許容できる組み合わせです。 –
はい、あなたがしようとしていることを理解しています。しかし、私たちに何を求めていますか?あなたの目的を達成するコードを書くか、もっと具体的な質問がありますか? –