n個のボールとk個のコンテナがある場合、これ -> ( (n+k-1)! / n!(k-1)! ) は組み合わせがいくつあるかを計算します。
これを変更して、JavaScript ですべての組み合わせのリストを作成するのは困難です。
ボールの配列といくつかのコンテナを受け取る関数内。
組み合わせ([1,2,3,4,5,6], 3)
各コンテナには任意の数のボールを入れることができ、コンテナは空にすることができます。
これは私が試みたものですが、各コンテナにボールが1つしかありません。
function generateCombinations(array, r, callback) {
function equal(a, b) {
for (var i = 0; i < a.length; i++) {
if (a[i] != b[i]) return false;
}
return true;
}
function values(i, a) {
var ret = [];
for (var j = 0; j < i.length; j++) ret.push(a[i[j]]);
return ret;
}
var n = array.length;
var indices = [];
for (var i = 0; i < r; i++) indices.push(i);
var final = [];
for (var i = n - r; i < n; i++) final.push(i);
while (!equal(indices, final)) {
callback(values(indices, array));
var i = r - 1;
while (indices[i] == n - r + i) i -= 1;
indices[i] += 1;
for (var j = i + 1; j < r; j++) indices[j] = indices[i] + j - i;
}
callback(values(indices, array));
}
count = 0
generateCombinations([1,2,3,4,5,6,7,8,9,1],3,function(first){
$("#hello").append(first+"<br />")
count = count +1
})
$("#hello").append(count)