Press n or j to go to the next uncovered block, b, p or k for the previous block.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | 1x 1x 1x 1x 3x 3x 3x 3x 3x 1x | import { random } from "jga-algorithms-random";
// Fisher–Yates algorithm
export const shuffle = <T>(array: T[]): T[] => {
let currentIndex: number = array.length;
let temporaryValue: T;
let randomIndex: number;
// While there remain elements to shuffle...
while (0 !== currentIndex) {
// Pick a remaining element...
randomIndex = random(0, currentIndex);
currentIndex -= 1;
// And swap it with the current element.
temporaryValue = array[currentIndex];
array[currentIndex] = array[randomIndex];
array[randomIndex] = temporaryValue;
}
return array;
};
|