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