From 3256f980b0524f3d52db45e75896f7b726a711b8 Mon Sep 17 00:00:00 2001 From: MarLatte <86508134+marlatte@users.noreply.github.com> Date: Sat, 20 May 2023 02:22:12 -0400 Subject: [PATCH 1/4] Update Fibonacci solution, test to focus on arrays Previous Fibonacci solution didn't use arrays, and since this is an array-heavy section, it seemed better to have that be the method here. Also, it accounts for entering 0 as an argument without having to add any extra code, which takes care of some currently open issues. Issues #192 and #236 are about the same thing. I added a test for that as well. --- 10_fibonacci/solution/fibonacci-solution.js | 18 +++++++----------- .../solution/fibonacci-solution.spec.js | 3 +++ 2 files changed, 10 insertions(+), 11 deletions(-) diff --git a/10_fibonacci/solution/fibonacci-solution.js b/10_fibonacci/solution/fibonacci-solution.js index 77add79..010131c 100644 --- a/10_fibonacci/solution/fibonacci-solution.js +++ b/10_fibonacci/solution/fibonacci-solution.js @@ -1,14 +1,10 @@ -const fibonacci = function (count) { - if (count < 0) return "OOPS"; - if (count === 0) return 0; - let a = 0; - let b = 1; - for (let i = 1; i < count; i++) { - const temp = b; - b = a + b; - a = temp; - } - return b; +const fibonacci = function(count) { + if (count < 0) return "OOPS" + const fibPart = [0, 1]; + for (let index = 1; index < count; index++) { + fibPart.push(fibPart[index] + fibPart[index -1]); + } + return fibPart[count]; }; module.exports = fibonacci; diff --git a/10_fibonacci/solution/fibonacci-solution.spec.js b/10_fibonacci/solution/fibonacci-solution.spec.js index 89de463..4e6a44d 100644 --- a/10_fibonacci/solution/fibonacci-solution.spec.js +++ b/10_fibonacci/solution/fibonacci-solution.spec.js @@ -16,6 +16,9 @@ describe('fibonacci', () => { test('25th fibonacci number is 75025', () => { expect(fibonacci(25)).toBe(75025); }); + test('0th fibonacci number is o', () => { + expect(fibonacci(0)).toBe(0); + }); test("doesn't accept negatives", () => { expect(fibonacci(-25)).toBe('OOPS'); }); From 41380593f7c8509f9da210b5f0a594edf9cc2a32 Mon Sep 17 00:00:00 2001 From: MarLatte <86508134+marlatte@users.noreply.github.com> Date: Sat, 20 May 2023 02:37:41 -0400 Subject: [PATCH 2/4] Update palindromes to handle numbers better The previous solution removed numbers entirely, whereas this one treats them like letters and checks if they are evenly spaced. More importantly, the old solution test seemed to check if the numbers were palindromic, but because the solution replaced them with "", it wasn't testing what it seemed to. I added a new test to differentiate between the palindromic "rac3e3car" and the non-palindromic "r3ace3car". --- 09_palindromes/solution/palindromes-solution.js | 2 +- 09_palindromes/solution/palindromes-solution.spec.js | 3 +++ 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/09_palindromes/solution/palindromes-solution.js b/09_palindromes/solution/palindromes-solution.js index bc5ef94..7950015 100644 --- a/09_palindromes/solution/palindromes-solution.js +++ b/09_palindromes/solution/palindromes-solution.js @@ -1,5 +1,5 @@ const palindromes = function (string) { - const processedString = string.toLowerCase().replace(/[^a-z]/g, ""); + const processedString = string.toLowerCase().replace(/[^a-z0-9]/g, ""); return processedString.split("").reverse().join("") == processedString; }; diff --git a/09_palindromes/solution/palindromes-solution.spec.js b/09_palindromes/solution/palindromes-solution.spec.js index e8d7e6a..6e31d91 100644 --- a/09_palindromes/solution/palindromes-solution.spec.js +++ b/09_palindromes/solution/palindromes-solution.spec.js @@ -24,4 +24,7 @@ describe('palindromes', () => { test('works with numbers in a string', () => { expect(palindromes('rac3e3car')).toBe(true); }); + test('works with unevenly spaced numbers in a string', () => { + expect(palindromes('r3ace3car')).toBe(false); + }); }); From e8fc8ce41e857afb62d1d27152d2d1fc655cbd0c Mon Sep 17 00:00:00 2001 From: MarLatte <86508134+marlatte@users.noreply.github.com> Date: Sat, 20 May 2023 02:37:41 -0400 Subject: [PATCH 3/4] Update palindromes to handle numbers better The previous solution removed numbers entirely, whereas this one treats them like letters and checks if they are evenly spaced. More importantly, the old solution test seemed to check if the numbers were palindromic, but because the solution replaced them with "", it wasn't testing what it seemed to. I added a new test to differentiate between the palindromic "rac3e3car" and the non-palindromic "r3ace3car". These changes also obviate the problems raised in Issue #355. --- 09_palindromes/solution/palindromes-solution.js | 2 +- 09_palindromes/solution/palindromes-solution.spec.js | 3 +++ 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/09_palindromes/solution/palindromes-solution.js b/09_palindromes/solution/palindromes-solution.js index bc5ef94..7950015 100644 --- a/09_palindromes/solution/palindromes-solution.js +++ b/09_palindromes/solution/palindromes-solution.js @@ -1,5 +1,5 @@ const palindromes = function (string) { - const processedString = string.toLowerCase().replace(/[^a-z]/g, ""); + const processedString = string.toLowerCase().replace(/[^a-z0-9]/g, ""); return processedString.split("").reverse().join("") == processedString; }; diff --git a/09_palindromes/solution/palindromes-solution.spec.js b/09_palindromes/solution/palindromes-solution.spec.js index e8d7e6a..6e31d91 100644 --- a/09_palindromes/solution/palindromes-solution.spec.js +++ b/09_palindromes/solution/palindromes-solution.spec.js @@ -24,4 +24,7 @@ describe('palindromes', () => { test('works with numbers in a string', () => { expect(palindromes('rac3e3car')).toBe(true); }); + test('works with unevenly spaced numbers in a string', () => { + expect(palindromes('r3ace3car')).toBe(false); + }); }); From 0d75cc0814a0389b48b31e4eae4acd55e2406e1b Mon Sep 17 00:00:00 2001 From: MarLatte <86508134+marlatte@users.noreply.github.com> Date: Sat, 20 May 2023 03:07:57 -0400 Subject: [PATCH 4/4] Update palindrome test to match solution test --- 09_palindromes/palindromes.spec.js | 3 +++ 1 file changed, 3 insertions(+) diff --git a/09_palindromes/palindromes.spec.js b/09_palindromes/palindromes.spec.js index ba34a4d..90d53e4 100644 --- a/09_palindromes/palindromes.spec.js +++ b/09_palindromes/palindromes.spec.js @@ -22,4 +22,7 @@ describe('palindromes', () => { test.skip('works with numbers in a string', () => { expect(palindromes('rac3e3car')).toBe(true); }); + test.skip('works with unevenly spaced numbers in a string', () => { + expect(palindromes('r3ace3car')).toBe(false); + }); });