ultra-mega-enumerator
Version:
Ultra Mega Enumerator is a lightweight library designed to enumerate various combinatorial objects.
30 lines • 1.15 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.KCompositionEnumeration = void 0;
const AbstractEnumeration_1 = require("./AbstractEnumeration");
const Composition_1 = require("./../objects/Composition");
const CombinationEnumeration_1 = require("./CombinationEnumeration");
class KCompositionEnumeration extends AbstractEnumeration_1.AbstractEnumeration {
constructor(n, k) {
super();
if (n < 1) {
throw new Error("Invalid argument: n must be at least 1.");
}
if (k < 1) {
throw new Error("Invalid argument: k must be at least 1.");
}
this.ce = new CombinationEnumeration_1.CombinationEnumeration(n - 1, k - 1);
this.n = n;
}
nextElement() {
if (!this.hasMoreElements()) {
throw new Error("No such element");
}
return Composition_1.Composition.compositionFromBitSet(this.ce.nextElement());
}
hasMoreElements() {
return this.ce.hasMoreElements();
}
}
exports.KCompositionEnumeration = KCompositionEnumeration;
//# sourceMappingURL=KCompositionEnumeration.js.map