fignumbers
Version:
A comprehensive TypeScript library for generating figurate numbers across multiple dimensions
30 lines • 1.02 kB
JavaScript
import { binomialCoeff } from "../utils/helpersMultidimensionalFigNumbers.js";
const exteriorInteriorDoubleSummation = (k, n) => {
let acc = 0n;
for (let j = 1n; j <= n - 1n; j++) {
for (let i = 0n; i <= k - 1n; i++) {
acc += 2n ** (1n + i) * binomialCoeff(k, 1n + i) * binomialCoeff(j, i);
}
}
return 2n * k + acc + 1n;
};
export class KDimensionalCenteredHyperOctahedronGenerator {
*generate({ step = 1n, k = 5n }) {
let delta = 1n;
yield 1n;
while (true) {
yield exteriorInteriorDoubleSummation(k, delta);
delta += step;
}
}
}
export class KDimensionalCenteredHyperOctahedronSpecificGenerator {
constructor(k) {
this.baseGenerator = new KDimensionalCenteredHyperOctahedronGenerator();
this.k = k;
}
*generate({ step = 1n }) {
return yield* this.baseGenerator.generate({ step, k: this.k });
}
}
//# sourceMappingURL=KDimensionalCenteredHyperOctahedronGenerator.js.map