Skip to content

Instantly share code, notes, and snippets.

@denchistyakov
Created August 8, 2018 18:00
Show Gist options
  • Save denchistyakov/6beee3de1c46711d0b7e79032f2c5da2 to your computer and use it in GitHub Desktop.
Save denchistyakov/6beee3de1c46711d0b7e79032f2c5da2 to your computer and use it in GitHub Desktop.
function chooseBestSum(t, k, ls) {
let acc = [];
generate(k, ls.length, [], ls, acc, 0, 0);
const maxTravel = acc
.map(chunk => chunk.reduce((acc, item) => acc += item))
.filter(sum => sum <= t)
.reduce((acc, sum) => {
if (sum > acc) {
acc = sum;
}
return acc;
}, 0);
return (maxTravel === 0) ? null : maxTravel;
}
function copy(arr) {
return [].slice.call(arr);
}
function generate(m, n, chunk, a, acc, num, last) {
if (num === m) {
acc.push(copy(chunk));
}
for (let i = last + 1; i <= n; i++) {
chunk.push(a[i - 1]);
generate(m, n, chunk, a, acc, num + 1, i);
chunk.pop();
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment