ml-combinations

1.1.0 • Public • Published

combinations

NPM version build status Test coverage npm download

Generate all possible combinations, which are all the unordered samples of size k, without replacement, from a set of n objects. The number of k-combinations is equal to the binomial coefficient:

image

Very low memory footprint even if the number of combinations to generate is high. Thank to generators, you can iterate over all possible samples, without creating a very large array.

Installation

$ npm install ml-combinations

Usage

// the package exports a generator function
const combinations = require('ml-combinations');
const options = { mode: 'index' };
 
// the generator function returns an iterator
var gen = combinations(2, 4, options);
 
// You can loop throw the iterator
for (let combination of gen) {
  console.log(combination);
}
 
// Or use destructuring, if you want to manipulate the array with all possible sample combinations
console.log([...gen]); // [ [ 3, 2 ], [ 0, 2 ], [ 1, 2 ], [ 1, 2 ], [ 0, 2 ], [ 0, 1 ] ]
 
// Use mask mode instead of index mode (index mode is the default)
options.mode = 'mask';
gen = combinations(2, 4, options);
console.log([...gen]); // [ [ 0, 0, 1, 1 ][ 1, 0, 0, 1 ],[ 0, 1, 0, 1 ],[ 0, 1, 1, 0 ],[ 1, 0, 1, 0 ],[ 1, 1, 0, 0 ] ]

References

Phillip J Chase, `Algorithm 382: Combinations of M out of N Objects [G6]', Communications of the Association for Computing Machinery 13:6:368 (1970). To the article

License

MIT

Versions

Current Tags

VersionDownloads (Last 7 Days)Tag
1.1.0230latest

Version History

VersionDownloads (Last 7 Days)Published
1.1.0230
1.0.10
1.0.00

Package Sidebar

Install

npm i ml-combinations

Weekly Downloads

230

Version

1.1.0

License

MIT

Unpacked Size

37 kB

Total Files

6

Last publish

Collaborators

  • mljs-bot
  • stropitek
  • targos
  • lpatiny
  • maasencioh
  • jeffersonh44
  • andcastillo
  • ml-bot