UNPKG

ultra-mega-enumerator

Version:

Ultra Mega Enumerator is a lightweight library designed to enumerate various combinatorial objects.

30 lines 1.15 kB
"use strict"; 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