UNPKG

@prelude/array

Version:

Array module.

32 lines 1.05 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); const swap_js_1 = __importDefault(require("./swap.js")); const zeroes_js_1 = __importDefault(require("./zeroes.js")); /** * Based on [Permutation Generation Methods, Robert Sedgewick](http://homepage.math.uiowa.edu/~goodman/22m150.dir/2007/Permutation%20Generation%20Methods.pdf). * @returns permutations of an array. */ const permutations = function* (values) { const n = values.length; const c = (0, zeroes_js_1.default)(n); let i = 1; let k = 0; yield values.slice(); while (i < n) { if (c[i] < i) { k = i % 2 && c[i]; (0, swap_js_1.default)(values, i, k); ++c[i]; i = 1; yield values.slice(); } else { c[i++] = 0; } } }; exports.default = permutations; //# sourceMappingURL=permutations.js.map