2017-10-05 13 views
-1

Pythonでは、私のプログラムで「番号を入力してください」と促したいと思います。例えば、私は「5」を入力し、その代わりに、1と5を含む1と5の間のすべての数の組み合わせを見つけて、シーケンスや数字を繰り返さずに5を加えます。したがって、これの出力はペア1,4と2,3でなければなりません。さらに、私はいくつの出力を持っているのかを教えてもらいたいので、この場合は2とします。そして、私が10よりも高い数字を入力すると、ペアよりも大きいので1,2,3,4が出力として、1,9が別のものなどとなります。1つの整数に対する合計の組み合わせを生成するプログラムを作成するにはどうすればよいですか?

+5

あなたは何かをお待ちですか? StackOverflowはコード作成サービスではありません。私たちが助けることができるように、私たちにあなたの試みを示すべきです。私たちはあなたにソリューションをコード化するだけではありません。 –

答えて

0

私はitertoolsで遊んでいるのが好きだから行きます

import itertools 

val = int(input()) 
r = range(val)[1:] 
res = []  
for i in range(len(r)+1): 
    res += [list(x) for x in itertools.combinations(r, i) if sum(list(x)) == val]  
print("Solution : %s " % res) 
print("Combinations : %s" % len(res)) 

# For input 10 : 
# Solution : [[1, 9], [2, 8], [3, 7], [4, 6], [1, 2, 7], [1, 3, 6], [1, 4, 5], [2, 3, 5], [1, 2, 3, 4]] 
# Combinations : 9 

このメソッドは、一種のブルートフォースですが、おそらく数学を使用する方がはるかに高速になる可能性があります。

+0

ありがとうございました!私はまだウェブサイトを初めて使っているので、まだサイトのエチケットに慣れています。 –

関連する問題