UNPKG

@ozen-ui/kit

Version:

React component library

44 lines (43 loc) 1.46 kB
import { __read, __spreadArray } from "tslib"; import isEqual from 'lodash.isequal'; export var generatePermutations = function (array, withSubsetSizes) { if (withSubsetSizes === void 0) { withSubsetSizes = false; } var result = []; var permute = function (array, current) { if (current === void 0) { current = []; } if (array.length === 0) { if (!result.some(function (r) { return isEqual(r, current); })) { result.push(__spreadArray([], __read(current), false)); } } else { for (var i = 0; i < array.length; i++) { var newArray = __spreadArray([], __read(array), false); var next = newArray.splice(i, 1); permute(newArray, current.concat(next)); } } }; var subsetsOfSize = function (array, k, start, subset) { if (start === void 0) { start = 0; } if (subset === void 0) { subset = []; } if (subset.length === k) { permute(subset); return; } for (var i = start; i < array.length; i++) { subset.push(array[i]); subsetsOfSize(array, k, i + 1, subset); subset.pop(); } }; if (withSubsetSizes) { for (var size = array.length; size >= 1; size--) { subsetsOfSize(array, size); } } else { permute(array); } return result; };