dankogai/js-combinatorics

Small bug: BaseN not allocating proper size

Closed this issue · 1 comments

Hello, I've discovered a small bug in the way that BaseN is allocating its size. More specifically, this line:

this.length = BigInt(size) ** BigInt(base);

Should be:

this.length = BigInt(base) ** BigInt(size);

The current bugged implementation cuts off the full results, which is most obvious when size > base.length.

[...new $C.BaseN('01', 5)]

// current
[
  [ '0', '0', '0', '0', '0' ],
  [ '1', '0', '0', '0', '0' ],
  [ '0', '1', '0', '0', '0' ],
  [ '1', '1', '0', '0', '0' ],
  [ '0', '0', '1', '0', '0' ],
  [ '1', '0', '1', '0', '0' ],
  [ '0', '1', '1', '0', '0' ],
  [ '1', '1', '1', '0', '0' ],
  [ '0', '0', '0', '1', '0' ],
  [ '1', '0', '0', '1', '0' ],
  [ '0', '1', '0', '1', '0' ],
  [ '1', '1', '0', '1', '0' ],
  [ '0', '0', '1', '1', '0' ],
  [ '1', '0', '1', '1', '0' ],
  [ '0', '1', '1', '1', '0' ],
  [ '1', '1', '1', '1', '0' ],
  [ '0', '0', '0', '0', '1' ],
  [ '1', '0', '0', '0', '1' ],
  [ '0', '1', '0', '0', '1' ],
  [ '1', '1', '0', '0', '1' ],
  [ '0', '0', '1', '0', '1' ],
  [ '1', '0', '1', '0', '1' ],
  [ '0', '1', '1', '0', '1' ],
  [ '1', '1', '1', '0', '1' ],
  [ '0', '0', '0', '1', '1' ]
]

// expected
[
  [ '0', '0', '0', '0', '0' ],
  [ '1', '0', '0', '0', '0' ],
  [ '0', '1', '0', '0', '0' ],
  [ '1', '1', '0', '0', '0' ],
  [ '0', '0', '1', '0', '0' ],
  [ '1', '0', '1', '0', '0' ],
  [ '0', '1', '1', '0', '0' ],
  [ '1', '1', '1', '0', '0' ],
  [ '0', '0', '0', '1', '0' ],
  [ '1', '0', '0', '1', '0' ],
  [ '0', '1', '0', '1', '0' ],
  [ '1', '1', '0', '1', '0' ],
  [ '0', '0', '1', '1', '0' ],
  [ '1', '0', '1', '1', '0' ],
  [ '0', '1', '1', '1', '0' ],
  [ '1', '1', '1', '1', '0' ],
  [ '0', '0', '0', '0', '1' ],
  [ '1', '0', '0', '0', '1' ],
  [ '0', '1', '0', '0', '1' ],
  [ '1', '1', '0', '0', '1' ],
  [ '0', '0', '1', '0', '1' ],
  [ '1', '0', '1', '0', '1' ],
  [ '0', '1', '1', '0', '1' ],
  [ '1', '1', '1', '0', '1' ],
  [ '0', '0', '0', '1', '1' ],
  [ '1', '0', '0', '1', '1' ],
  [ '0', '1', '0', '1', '1' ],
  [ '1', '1', '0', '1', '1' ],
  [ '0', '0', '1', '1', '1' ],
  [ '1', '0', '1', '1', '1' ],
  [ '0', '1', '1', '1', '1' ],
  [ '1', '1', '1', '1', '1' ]
]

I will momentarily create a pull request for this.

Thank you!