ultra-mega-enumerator
Version:
Ultra Mega Enumerator is a lightweight library designed to enumerate various combinatorial objects.
41 lines (40 loc) • 1.99 kB
TypeScript
export declare class Numbers {
static divides(k: number, n: number): boolean;
static factors(n: number): Set<number>;
static isPowerOfTwo(n: number): boolean;
static minDistMod12(a: number, b: number): number;
static correctMod(a: number, b: number): number;
static prime(n0: number): boolean;
static primeFactorization(n0: number): [number[], number[]];
static totient(n: number): number;
static gcd(a0: number, b0: number): number;
static lcm(a: number, b: number): number;
static catalan(n: number): number;
static bell(n: number): number;
static binomial(n: number, k: number): number;
static multinomial(n: number[]): number;
static factorial(n: number): number;
static triangularNumber(n: number): number;
static reverseTriangularNumber(n: number): number;
/**
* Expands the bits of the number `n` by inserting extra characters after each bit.
*
* When `filler` is '0', it inserts k zeros after each bit (dilating the bits).
* When `filler` is 'bit', it repeats the bit k times after the original bit (replicating the bit).
*
* @param n - The original number.
* @param k - The number of extra characters to insert after each bit.
* @param filler - Either '0' (to insert zeros) or 'bit' (to repeat the bit). Defaults to '0'.
* @returns The new number after the expansion.
*/
static expandBits(n: number, k: number, filler?: '0' | 'bit'): number;
static decodeCantor(v: number): [number, number];
static decodeIntervals(iPrime: number): number;
static CantorIntervalBinaryNumber(a: number, b: number): number;
static getPermutation(n: number): number[];
static permuteBits(a: number, b: number): number;
static toBalancedTernary(n: number, nbdigits: number): number[];
static fromBalancedTernary(trits: number[]): number;
static toBinary(n: number, nbdigits: number): number[];
static fromBinary(bits: number[]): number;
}