From 6b2840f579322309bdfd7695fae5012e48fb25e1 Mon Sep 17 00:00:00 2001 From: Damien Chazoule Date: Sun, 3 Oct 2021 15:40:45 +0200 Subject: [PATCH 1/4] Added Fisher Yates Algorithm --- Sorts/FisherYatesShuffle.js | 24 ++++++++++++++++++++++++ Sorts/test/FisherYatesShuffle.test.js | 27 +++++++++++++++++++++++++++ 2 files changed, 51 insertions(+) create mode 100644 Sorts/FisherYatesShuffle.js create mode 100644 Sorts/test/FisherYatesShuffle.test.js diff --git a/Sorts/FisherYatesShuffle.js b/Sorts/FisherYatesShuffle.js new file mode 100644 index 000000000..d15360eef --- /dev/null +++ b/Sorts/FisherYatesShuffle.js @@ -0,0 +1,24 @@ +export const shuffle = (array) => { + let maxLength = array.length, + temp, + idx + + // While there remain elements to shuffle... + while (maxLength) { + // Pick a remaining element... + idx = Math.floor(Math.random() * maxLength--) + + // And swap it with the current element + temp = array[maxLength] + array[maxLength] = array[idx] + array[idx] = temp + } + + return array +} + +const array = [0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89] +console.log('array', array) + +const mixedArray = shuffle(array) +console.log('mixedArray', mixedArray) diff --git a/Sorts/test/FisherYatesShuffle.test.js b/Sorts/test/FisherYatesShuffle.test.js new file mode 100644 index 000000000..9bdc7497b --- /dev/null +++ b/Sorts/test/FisherYatesShuffle.test.js @@ -0,0 +1,27 @@ +import { shuffle } from '../fisherYatesShuffle' + +describe('shuffle', () => { + it('expects to have a new array with same size', () => { + const fibonacci = [0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89] + const mixedArray = shuffle(fibonacci) + + expect(mixedArray).toHaveLength(fibonacci.length) + }) + + it('expects to have a new array with same values', () => { + const fibonacci = [0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89] + const mixedArray = shuffle(fibonacci) + + expect(mixedArray).toContain(0) + expect(mixedArray).toContain(1) + expect(mixedArray).toContain(2) + expect(mixedArray).toContain(3) + expect(mixedArray).toContain(5) + expect(mixedArray).toContain(8) + expect(mixedArray).toContain(13) + expect(mixedArray).toContain(21) + expect(mixedArray).toContain(34) + expect(mixedArray).toContain(55) + expect(mixedArray).toContain(89) + }) +}) From 0ada757576a9c8720cb6689d819c85e6ee562042 Mon Sep 17 00:00:00 2001 From: Omkarnath Parida Date: Sun, 3 Oct 2021 20:08:02 +0530 Subject: [PATCH 2/4] Update FisherYatesShuffle.js Splited initialized 'let' declarations into multiple statements --- Sorts/FisherYatesShuffle.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Sorts/FisherYatesShuffle.js b/Sorts/FisherYatesShuffle.js index d15360eef..77eee5e61 100644 --- a/Sorts/FisherYatesShuffle.js +++ b/Sorts/FisherYatesShuffle.js @@ -1,7 +1,7 @@ export const shuffle = (array) => { - let maxLength = array.length, - temp, - idx + let maxLength = array.length + let temp + let idx // While there remain elements to shuffle... while (maxLength) { From 6fdd267459e4c482c4abeedebdab66392f442712 Mon Sep 17 00:00:00 2001 From: Omkarnath Parida Date: Sun, 3 Oct 2021 20:10:26 +0530 Subject: [PATCH 3/4] Update FisherYatesShuffle.js removed console statement --- Sorts/FisherYatesShuffle.js | 6 ------ 1 file changed, 6 deletions(-) diff --git a/Sorts/FisherYatesShuffle.js b/Sorts/FisherYatesShuffle.js index 77eee5e61..214cb5baa 100644 --- a/Sorts/FisherYatesShuffle.js +++ b/Sorts/FisherYatesShuffle.js @@ -16,9 +16,3 @@ export const shuffle = (array) => { return array } - -const array = [0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89] -console.log('array', array) - -const mixedArray = shuffle(array) -console.log('mixedArray', mixedArray) From 0fea99db493eea264f8355280b13182ade3ef4f3 Mon Sep 17 00:00:00 2001 From: Omkarnath Parida Date: Sun, 3 Oct 2021 20:10:56 +0530 Subject: [PATCH 4/4] Update FisherYatesShuffle.test.js Updated fisherYatesShuffle to FisherYatesShuffle --- Sorts/test/FisherYatesShuffle.test.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Sorts/test/FisherYatesShuffle.test.js b/Sorts/test/FisherYatesShuffle.test.js index 9bdc7497b..0971501a9 100644 --- a/Sorts/test/FisherYatesShuffle.test.js +++ b/Sorts/test/FisherYatesShuffle.test.js @@ -1,4 +1,4 @@ -import { shuffle } from '../fisherYatesShuffle' +import { shuffle } from '../FisherYatesShuffle' describe('shuffle', () => { it('expects to have a new array with same size', () => {