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