/subset-sum

Node.js library to find solutions to the coin changing problem.

Primary LanguageJavaScriptMIT LicenseMIT

Subset sum

NPM

npm version CircleCI

Node.js module to compute solutions to the Coin changing problem, i.e. find combinations of integers from a given set of available integers that sum up to a desired result.

Quick start

  1. Install the library

via npm

npm i -S @haensl/subset-sum

via yarn

yarn add @haensl/subset-sum
  1. Use the library in your code

in CommonJS (e.g. Node.js)

const sumService = require('@haensl/subset-sum');

const numbers = [1, 4, 2, 5, 1, 3];
const target = 6;
const solver = sumService.subsetSum(numbers, target);

for (let solution of solver) {
  console.log(solution);
}

in ESM (e.g. Browser)

import sumService from '@haensl/subset-sum';

const numbers = [1, 4, 2, 5, 1, 3];
const target = 6;
const solver = sumService.subsetSum(numbers, target);

for (let solution of solver) {
  console.log(solution);
}

API

subsetSum(numbers, target) => Generator

Returns a generator that yields arrays of integers from numbers that add up to target.

uniqueSolutions(solutions) => Array

Filters solutions for unique solutions.

isSameSolution(solutionA, solutionB) => boolean

Compares to solutions and determines if they are equal, i.e. contain the same integers. E.g. [1, 1, 3, 1] and [1, 3, 1, 1] are considered equal.