30 lines
502 B
JavaScript
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');
|
|
|
|
})();
|