UNPKG

@sunzhongmou/math

Version:
49 lines 2.2 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.shuffle = exports.randomPickElements = exports.randomPickElement = exports.getDescendingPermutation = exports.getIteratedPermutation = exports.getFullPermutation = exports.getSequence = void 0; function getSequence(n) { return [...Array(n + 1).keys()]; } exports.getSequence = getSequence; function getFullPermutation(sequence) { return sequence.reduce((permutation, currentValue) => permutation.concat(sequence.map(ele => [currentValue, ele])), []); } exports.getFullPermutation = getFullPermutation; function getIteratedPermutation(sequence, permutation) { return sequence.reduce((iteratedPermutation, currentValue) => iteratedPermutation.concat(permutation.map(ele => [...ele, currentValue])), []); } exports.getIteratedPermutation = getIteratedPermutation; function getDescendingPermutation(sequence) { const permutation = []; return permutation.concat(...sequence.map((currentValue, index) => sequence.slice(index + 1).map(followValue => [currentValue, followValue]))); } exports.getDescendingPermutation = getDescendingPermutation; function randomPickElement(sequence) { return sequence[takeRandomValueFromNumber(sequence.length)]; } exports.randomPickElement = randomPickElement; function randomPickElements(sequence, capacity) { const startIndex = takeRandomValueFromNumber(sequence.length); let sourceArray = sequence; if (startIndex + capacity > sequence.length) { sourceArray = sequence.concat(sequence); } return sourceArray.slice(startIndex, startIndex + capacity); } exports.randomPickElements = randomPickElements; function takeRandomValueFromNumber(n) { return Math.floor(Math.random() * n); } function shuffle(array) { let currentIndex = array.length, temporaryValue, randomIndex; while (0 !== currentIndex) { randomIndex = Math.floor(Math.random() * currentIndex); currentIndex -= 1; temporaryValue = array[currentIndex]; array[currentIndex] = array[randomIndex]; array[randomIndex] = temporaryValue; } return array; } exports.shuffle = shuffle; //# sourceMappingURL=permutation.js.map