@extra-array/subsequences
Version:
Lists all possible subsequences.
20 lines (19 loc) • 400 B
JavaScript
function* subsequences(x, n = -1) {
var X = x.length;
if (n >= X) {
if (n === X)
yield x;
return;
}
if (n === 0 || X === 0) {
yield [];
return;
}
var y = x.slice(0, -1);
yield* subsequences(y, n);
for (var s of subsequences(y, n - 1)) {
s.push(x[X - 1]);
yield s;
}
}
export { subsequences as default };