2.0.0 ā€¢ Published 4 years ago

number-of-cases v2.0.0

Weekly downloads
2
License
MIT
Repository
github
Last release
4 years ago

Number-of-Cases

GitHub license npm version Downloads Build Status

Number of Case Generator for TypeScript (JavaScript).

SymbolClass
nPrPermutation
n!Factorial
nāˆrRepeatedPermutation
A x B x ... x ZCartesianProduct
nCrCombination

Usage

Installation

npm install --save number-of-cases

Common Features

interface CaseGenerator<Iterator, ReverseIterator>
{
    // FREQUENCE ACCESSORS
    size(): number;
    begin(): Iterator;
    end(): Iterator;

    // REVERSE ITERATION IS ALSO POSSIBLE
    rbegin(): ReverseIterator;
    rend(): ReverseIterator;

    // ES2015, THEN FOR-OF ITERATION IS ALSO POSSIBLE
    [Symbol.iterator]: IterableIterator<Array<number>>;
}

interface Iterator
{
    get value(): Array<number>;

    prev(): Iterator;
    next(): Iterator;
    equals(obj: Iterator): boolean;
}
import { CartesianProduct } from "number-of-cases";

function main(): void
{
    let generator = new CartesianProduct(5, 4); // 5C4
    console.log("n(5C4) =", generator.size());

    for (let it = generator.begin(); !it.equals(generator.end()); it = it.next())
    {
        let aCase: number[] = it.value;
        console.log("  -", aCase);
    }
}
main();
for (let it = generator.rbegin(); !it.equals(generator.rend()); it = it.next())
{
    let aCase: number[] = it.value;
    console.log("  -", aCase);
}
for (let aCase of generator)
    console.log("  -", aCase);

Random Accessor

interface RandomCaseGenerator<Iterator, ReverseIterator>
    extends CaseGenerator<Iterator, ReverseIterator>
{
    at(index: number): Array<number>;
}

Most of Case Generator classes, except the Combination class, provide a random accessor at(). By that method at(), you can access to a specific case through not full iteration, but the special index number.

  • Permutation
  • Factorial
  • RepeatedPermutation
  • CartesianProduct
  • Combination
import { Permutation } from "number-of-cases";

function main(): void
{
    let generator = new Permutation(7, 3);

    console.log(generator.at(13));
    console.log(generator.at(31));
    console.log(generator.at(9999)); // throw an out_of_range error.
}
main();
2.0.0

4 years ago

1.1.0

4 years ago

1.0.1

5 years ago

1.0.0

5 years ago

0.0.0

6 years ago