From 28eacebaf966815757c37cf4f4ca504bd5de72d0 Mon Sep 17 00:00:00 2001 From: Kristofer Koishigawa Date: Mon, 14 May 2018 23:12:04 +0900 Subject: [PATCH] fix(challenges): Add Tests and Solution for Project Euler 50 (#17152) Added an additional test and a solution adapted from the one @elliotjz contributed to the fCC Arcade Mode. BREAKING CHANGE: None --- .../project-euler-problems.json | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/challenges/08-coding-interview-questions-and-take-home-assignments/project-euler-problems.json b/challenges/08-coding-interview-questions-and-take-home-assignments/project-euler-problems.json index 598005e081..975184a57b 100644 --- a/challenges/08-coding-interview-questions-and-take-home-assignments/project-euler-problems.json +++ b/challenges/08-coding-interview-questions-and-take-home-assignments/project-euler-problems.json @@ -1742,17 +1742,18 @@ "type": "bonfire", "title": "Problem 50: Consecutive prime sum", "tests": [ - "assert.strictEqual(euler50(), 997651, 'message: euler50() should return 997651.');" + "assert.strictEqual(consecutivePrimeSum(1000), 953, 'message: consecutivePrimeSum(1000) should return 953.');", + "assert.strictEqual(consecutivePrimeSum(1000000), 997651, 'message: consecutivePrimeSum(1000000) should return 997651.');" ], - "solutions": [], + "solutions": ["function consecutivePrimeSum(limit) {\n function isPrime(num) {\n if (num < 2) {\n return false;\n } else if (num === 2) {\n return true;\n }\n const sqrtOfNum = Math.floor(num ** 0.5);\n for (let i = 2; i <= sqrtOfNum + 1; i++) {\n if (num % i === 0) {\n return false;\n }\n }\n return true;\n }\n function getPrimes(limit) {\n const primes = [];\n for (let i = 0; i <= limit; i++) {\n if (isPrime(i)) primes.push(i);\n }\n return primes;\n }\n\n const primes = getPrimes(limit);\n let primeSum = [...primes];\n primeSum.reduce((acc, n, i) => {\n primeSum[i] += acc;\n return acc += n;\n }, 0);\n\n for (let j = primeSum.length - 1; j >= 0; j--) {\n for (let i = 0; i < j; i++) {\n const sum = primeSum[j] - primeSum[i];\n if (sum > limit) break;\n if (isPrime(sum) && primes.indexOf(sum) > -1) return sum;\n }\n }\n}"], "translations": {}, "challengeSeed": [ - "function euler50() {", + "function consecutivePrimeSum(limit) {", " // Good luck!", " return true;", "}", "", - "euler50();" + "consecutivePrimeSum(1000000);" ], "description": [ "The prime 41, can be written as the sum of six consecutive primes:",