UNPKG

@ozen-ui/kit

Version:

React component library

48 lines (47 loc) 1.7 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.generatePermutations = void 0; var tslib_1 = require("tslib"); var lodash_isequal_1 = tslib_1.__importDefault(require("lodash.isequal")); 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 (0, lodash_isequal_1.default)(r, current); })) { result.push(tslib_1.__spreadArray([], tslib_1.__read(current), false)); } } else { for (var i = 0; i < array.length; i++) { var newArray = tslib_1.__spreadArray([], tslib_1.__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; }; exports.generatePermutations = generatePermutations;