RosettaCodeData/Task/Combinations/JavaScript/combinations-3.js

30 lines
502 B
JavaScript

(function () {
function comb(n, lst) {
if (!n) return [[]];
if (!lst.length) return [];
var x = lst[0],
xs = lst.slice(1);
return comb(n - 1, xs).map(function (t) {
return [x].concat(t);
}).concat(comb(n, xs));
}
// [m..n]
function range(m, n) {
return Array.apply(null, Array(n - m + 1)).map(function (x, i) {
return m + i;
});
}
return comb(3, range(0, 4))
.map(function (x) {
return x.join(' ');
}).join('\n');
})();