Pythonを使用すると、安全に組み合わせのルートに行くことができます。
組み合わせは反復可能です:組み合わせを反復処理するたびに、一意のオブジェクトセットが返されます。
非常に低いサイズのセット(2,3,4個のオブジェクトなど)から始めて、値の合計を実行して確認することができます。
値の合計を実行するには、numpy.arraysを見てみることをお勧めします。それらは処理をスピードアップします。
背後では、組み合わせは階乗演算を使用します。これは、可能な組み合わせが指数関数的に多いことを意味します。
さらに詳しい情報:
Numpy Array
Itertools Combinations
これは、秒あたりの組み合わせの数千人をチェックすることを期待することができたためにブルートフォースで終了します。私はそれが最高のアルゴリズムであるかどうかはわかりませんが、それは簡単で機能します。
例コード:
from itertools import combinations
import numpy
a = [1,-2,3,-4,5,-6,7,-8] # Any list of float or integers...
min = 5
max = 10
size = 3
c = combinations(a, size)
for combi in c:
a = numpy.array(combi)
if (a.sum() in range(min, max)):
print('Result found for '+str(combi))
break
php?奇妙な選択のように聞こえる – pm100
これは、この特定のタスクのための選択ではない、私のPHPアプリケーション内で達成する必要があるのはこのタスクです。 – Giedrius