From feefe881eae20bf30ed5c3ba156b4249588da105 Mon Sep 17 00:00:00 2001 From: qingwen23 Date: Mon, 19 Jul 2021 02:44:37 +0800 Subject: [PATCH 1/5] Added AverageMedian function --- Maths/AverageMedian.js | 39 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) create mode 100644 Maths/AverageMedian.js diff --git a/Maths/AverageMedian.js b/Maths/AverageMedian.js new file mode 100644 index 000000000..2504f0155 --- /dev/null +++ b/Maths/AverageMedian.js @@ -0,0 +1,39 @@ +/* + * function averageMedian + * to find the median value of an array of numbers + * the numbers in an array will be sorted in ascending order by the function sortNumbers + * if the length of the array is even number, the median value will be the average of the two middle numbers + * else if the length of the array is odd number, the median value will be the middle number in the array + */ + + /* + * Doctests + * + * > averageMedian([8, 9, 1, 2, 5, 10, 11]) + * 8 + * > averageMedian([15, 18, 3, 9, 13, 5]) + * 11 + * > averageMedian([1,2,3,4,6,8]) + * 3.5 + */ + +function averageMedian(numbers) { + let median = 0; const numLength = numbers.length + numbers = numbers.sort(sortNumbers) + + if (numLength % 2 === 0) { + median = (numbers[numLength / 2 - 1] + numbers[numLength / 2]) / 2 + } else { + median = numbers[(numLength - 1) / 2] + } + + return median +} + +function sortNumbers(num1, num2) { + return num1 - num2 +} + +console.log(averageMedian([8, 9, 1, 2, 5, 10, 11])) +console.log(averageMedian([15, 18, 3, 9, 13, 5])) +console.log(averageMedian([1,2,3,4,6,8])) \ No newline at end of file From ab229c08a29ed41c46eeb49a96d1ef9a56e9105c Mon Sep 17 00:00:00 2001 From: qingwen23 Date: Mon, 19 Jul 2021 02:54:42 +0800 Subject: [PATCH 2/5] Added wiki reference link for Median --- Maths/AverageMedian.js | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Maths/AverageMedian.js b/Maths/AverageMedian.js index 2504f0155..81faa9e08 100644 --- a/Maths/AverageMedian.js +++ b/Maths/AverageMedian.js @@ -1,4 +1,6 @@ /* + * Median: https://en.wikipedia.org/wiki/Median + * * function averageMedian * to find the median value of an array of numbers * the numbers in an array will be sorted in ascending order by the function sortNumbers From 188c6f6537b4e112b16f6a4b6a07f9e827858900 Mon Sep 17 00:00:00 2001 From: qingwen23 Date: Mon, 19 Jul 2021 03:05:43 +0800 Subject: [PATCH 3/5] Fixed minor grammar typo in AverageMedian function --- Maths/AverageMedian.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Maths/AverageMedian.js b/Maths/AverageMedian.js index 81faa9e08..155399ba8 100644 --- a/Maths/AverageMedian.js +++ b/Maths/AverageMedian.js @@ -20,7 +20,7 @@ */ function averageMedian(numbers) { - let median = 0; const numLength = numbers.length + let median = 0, numLength = numbers.length numbers = numbers.sort(sortNumbers) if (numLength % 2 === 0) { From 04b71c337a4c2fe37123eef0c2cfcded85d9df02 Mon Sep 17 00:00:00 2001 From: qingwen23 Date: Mon, 19 Jul 2021 12:44:48 +0800 Subject: [PATCH 4/5] Update AverageMedian.js and added AverageMedian.test.js --- Maths/AverageMedian.js | 8 +++----- Maths/test/AverageMedian.test.js | 21 +++++++++++++++++++++ 2 files changed, 24 insertions(+), 5 deletions(-) create mode 100644 Maths/test/AverageMedian.test.js diff --git a/Maths/AverageMedian.js b/Maths/AverageMedian.js index 155399ba8..d03b8ad30 100644 --- a/Maths/AverageMedian.js +++ b/Maths/AverageMedian.js @@ -19,7 +19,7 @@ * 3.5 */ -function averageMedian(numbers) { +const averageMedian = (numbers) => { let median = 0, numLength = numbers.length numbers = numbers.sort(sortNumbers) @@ -32,10 +32,8 @@ function averageMedian(numbers) { return median } -function sortNumbers(num1, num2) { +const sortNumbers = (num1, num2) => { return num1 - num2 } -console.log(averageMedian([8, 9, 1, 2, 5, 10, 11])) -console.log(averageMedian([15, 18, 3, 9, 13, 5])) -console.log(averageMedian([1,2,3,4,6,8])) \ No newline at end of file +export { averageMedian } \ No newline at end of file diff --git a/Maths/test/AverageMedian.test.js b/Maths/test/AverageMedian.test.js new file mode 100644 index 000000000..6de5e1fc1 --- /dev/null +++ b/Maths/test/AverageMedian.test.js @@ -0,0 +1,21 @@ +import { averageMedian } from '../AverageMedian' + +test('should return the median of an array of numbers:', () => { + const medianValue = averageMedian([1, 2, 6, 4, 5]) + expect(medianValue).toBe(4) +}) + +test('should return the median of an array of numbers:', () => { + const medianValue = averageMedian([8, 9, 1, 2, 5, 10, 11]) + expect(medianValue).toBe(8) +}) + +test('should return the median of an array of numbers:', () => { + const medianValue = averageMedian([15, 18, 3, 9, 13, 5]) + expect(medianValue).toBe(11) +}) + +test('should return the median of an array of numbers:', () => { + const medianValue = averageMedian([1,2,3,4,6,8]) + expect(medianValue).toBe(3.5) +}) \ No newline at end of file From 937b472dfaa5914f484688f6e43bdfccac40949a Mon Sep 17 00:00:00 2001 From: qingwen23 Date: Mon, 19 Jul 2021 13:34:38 +0800 Subject: [PATCH 5/5] Update AverageMedian.js and AverageMedian.test.js --- Maths/AverageMedian.js | 28 ++++++++++++++-------------- Maths/test/AverageMedian.test.js | 4 ++-- 2 files changed, 16 insertions(+), 16 deletions(-) diff --git a/Maths/AverageMedian.js b/Maths/AverageMedian.js index d03b8ad30..582000968 100644 --- a/Maths/AverageMedian.js +++ b/Maths/AverageMedian.js @@ -8,9 +8,9 @@ * else if the length of the array is odd number, the median value will be the middle number in the array */ - /* +/* * Doctests - * + * * > averageMedian([8, 9, 1, 2, 5, 10, 11]) * 8 * > averageMedian([15, 18, 3, 9, 13, 5]) @@ -20,20 +20,20 @@ */ const averageMedian = (numbers) => { - let median = 0, numLength = numbers.length - numbers = numbers.sort(sortNumbers) - - if (numLength % 2 === 0) { - median = (numbers[numLength / 2 - 1] + numbers[numLength / 2]) / 2 - } else { - median = numbers[(numLength - 1) / 2] - } - - return median + let median = 0; const numLength = numbers.length + numbers = numbers.sort(sortNumbers) + + if (numLength % 2 === 0) { + median = (numbers[numLength / 2 - 1] + numbers[numLength / 2]) / 2 + } else { + median = numbers[(numLength - 1) / 2] + } + + return median } const sortNumbers = (num1, num2) => { - return num1 - num2 + return num1 - num2 } -export { averageMedian } \ No newline at end of file +export { averageMedian } diff --git a/Maths/test/AverageMedian.test.js b/Maths/test/AverageMedian.test.js index 6de5e1fc1..7e525fa5f 100644 --- a/Maths/test/AverageMedian.test.js +++ b/Maths/test/AverageMedian.test.js @@ -16,6 +16,6 @@ test('should return the median of an array of numbers:', () => { }) test('should return the median of an array of numbers:', () => { - const medianValue = averageMedian([1,2,3,4,6,8]) + const medianValue = averageMedian([1, 2, 3, 4, 6, 8]) expect(medianValue).toBe(3.5) -}) \ No newline at end of file +})