UNPKG

ultra-mega-enumerator

Version:

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

37 lines 1.2 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.WeakCompositionEnumeration = void 0; const AbstractEnumeration_1 = require("./AbstractEnumeration"); const CombinationEnumeration_1 = require("./CombinationEnumeration"); class WeakCompositionEnumeration extends AbstractEnumeration_1.AbstractEnumeration { constructor(n, k) { super(); this.ce = new CombinationEnumeration_1.CombinationEnumeration(n + k - 1, k - 1); } hasMoreElements() { return this.ce.hasMoreElements(); } nextElement() { if (!this.hasMoreElements()) { throw new Error("No such element"); } return this.convertCombination(this.ce.nextElement()); } convertCombination(c) { const o = []; let cnt = 0; for (let j = 0; j < c.size(); j++) { if (c.get(j)) { // is a bar o.push(cnt); cnt = 0; } else { // is a star cnt++; } } o.push(cnt); return o; } } exports.WeakCompositionEnumeration = WeakCompositionEnumeration; //# sourceMappingURL=WeakCompositionEnumeration.js.map