k n : https://gist.github.com/axelpale/3118596.
. , , , .
function getComboSums(set, k) {
return k_combinations(arr, n).map(function(a){
var sum=0;
a.forEach(function(v){sum += v})
return sum;
});
}
, 2 4 . , 12 781.
function getComboSumRange(set, kStart, kEnd) {
var result = [];
for (var i=kStart; i <= kEnd; i++) {
result = result.concat(getComboSums(set, i));
}
return result;
}
:
var arr = [1, 32, 921, 9213, 97, 23, 97, 81, 965, 82, 965, 823];
console.log(getComboSumRange(arr, 2, 4))
781 k n:
n! / (k!(n - k)!)
k = 2 → 4.
:
[33, 922, 9214, 98, 24, 98 ... 2834, 1951, 2835]
, :
arr[0] + arr[1], arr[0] + arr[2]], ...
:
... arr[7] + arr[9] + arr[10] + arr[11], arr[8] + arr[9] + arr[10] + arr[11]