@sunzhongmou/math
Version:
Mathematical knowledge context
49 lines • 2.2 kB
JavaScript
;
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