subsetAverage
by strider820
JavaScript
function subsetAverage(numbers, target, count, partial) {
var s, n, remaining;
partial = partial || [];
// sum partial
s = partial.reduce(function (a, b) {
return a + b;
}, 0);
// check if the partial sum/count is equals to target
if (Math.round(s/count*10)/10 === target && partial.length == count) {
console.log("(%s) / %s = %s", partial.join(" + "), count, target)
}
if (Math.round(s/count*10)/10 >= target || partial.length >= count) {
return; // if we reach the number why bother to continue
}
for (var i = 0; i < numbers.length; i++) {
n = numbers[i];
remaining = numbers.slice(i + 1);
subsetAverage(remaining, target, count, partial.concat([n]));
}
}
subsetAverage([4,6,6,7,7,8,9,9],7.3,4);