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 | 1x 1x 2x 2x 6x 6x 6x 2x | import { random } from "jga-algorithms-random";
// Fisher–Yates algorithm
export const shuffle = <Element>(array: Element[]): Element[] => {
let currentIndex: number = array.length;
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.
[array[currentIndex], array[randomIndex]] = [array[randomIndex], array[currentIndex]];
}
return array;
};
|