diff --git a/parityOutlier/freddieSolution.js b/parityOutlier/freddieSolution.js new file mode 100644 index 0000000..122be74 --- /dev/null +++ b/parityOutlier/freddieSolution.js @@ -0,0 +1,33 @@ +// solution using do/while +const isEven = int => int % 2 === 0; + +const findParityOutlier = intergers => { + const [first, second, third] = intergers; + + const lookingForEven = + [first, second, third].reduce( + (acc, item) => (isEven(item) ? acc + 1 : acc), + 0 + ) < 2; + + let i = 0; + let found = false; + let value = null; + do { + if (lookingForEven) { + found = isEven(intergers[i]); + value = intergers[i]; + } + + if (!lookingForEven) { + found = !isEven(intergers[i]); + value = intergers[i]; + } + i++; + } while (!found); + return value; +}; + +module.exports = { + findParityOutlier, +}; diff --git a/parityOutlier/solution.test.js b/parityOutlier/solution.freddie.test.js similarity index 51% rename from parityOutlier/solution.test.js rename to parityOutlier/solution.freddie.test.js index 103474d..1b80b1e 100644 --- a/parityOutlier/solution.test.js +++ b/parityOutlier/solution.freddie.test.js @@ -1,11 +1,11 @@ -const { findParityOutlier } = require('./PersonsSolution'); +const { findParityOutlier } = require("./freddieSolution"); -describe('findParityOutlier', () => { - it('should find the outlier when it is an even number', () => { +describe("findParityOutlier", () => { + it("should find the outlier when it is an even number", () => { const testArray = [2, 4, 0, 100, 4, 11, 2602, 36]; expect(findParityOutlier(testArray)).toEqual(11); }); - it('should find the outlier when it is an odd number', () => { + it("should find the outlier when it is an odd number", () => { const testArray = [160, 3, 1719, 19, 11, 13, -21]; expect(findParityOutlier(testArray)).toEqual(160); });