Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/kamdz/bin-perm-gen

A fast, zero-dependency generator for creating binary permutations with customizable format and filtering options.
https://github.com/kamdz/bin-perm-gen

binary generator permutations

Last synced: 4 days ago
JSON representation

A fast, zero-dependency generator for creating binary permutations with customizable format and filtering options.

Awesome Lists containing this project

README

        

# ⚡ Binary Permutations Generator

A fast, zero-dependency generator for creating binary permutations with customizable format and filtering options. The use of **ES6 generators** allows this package to handle large values of `n` efficiently. Permutations are generated on-the-fly, ensuring low memory usage and smooth high performance.

## 🚀 Features

- **Zero dependencies** – simple and lightweight.
- **Flexible format options** – return results as booleans, numbers, or strings.
- **Efficient ES6 generator for large `n`** – handles big inputs smoothly, yielding permutations one-by-one.
- **Custom filters** – control how many `true` values appear in results.

## 🛠️ Installation

```bash
npm install bin-perm-gen
```

## 📖 Usage

```javascript
import getBinaryPermutations from 'binary-perm-gen';

// Basic usage with default options
const generator = getBinaryPermutations(3);
for (const permutation of generator) {
console.log(permutation);
}
// Output:
// [ false, false, false ]
// [ false, false, true ]
// [ false, true, false ]
// ...

// Using options
const generatorWithOptions = getBinaryPermutations(4, { format: 'string', minOnes: 2 });
for (const permutation of generatorWithOptions) {
console.log(permutation);
}
// Output:
// '0011'
// '0101'
// '0110'
// '1001'
// ...

// Convert to array, recommended only for small n parameter
const generatedArray = [...getBinaryPermutations(4)];
```

## 🔧 API

### `getBinaryPermutations(n: number, options?: Options): Generator`

Generates all binary permutations for `n` bits, allowing customization through the `options` parameter.

- `n` (number): The number of bits (must be a non-negative integer).
- `options` (optional):
- `format` (`'boolean' | 'string' | 'number'`): The output format. Defaults to `'boolean'`.
- `minOnes` (number): Minimum number of ones (`true` values) in the result. Defaults to `0`.
- `maxOnes` (number): Maximum number of ones (`true` values) in the result. Defaults to `n`.