From ce45cf52cad7c49a933ac6259655f3849af5f718 Mon Sep 17 00:00:00 2001 From: Gonzalo Diaz Date: Wed, 8 May 2024 18:58:24 -0400 Subject: [PATCH 1/2] =?UTF-8?q?[Hacker=20Rank]:=20Project=20Euler=20#2:=20?= =?UTF-8?q?Even=20Fibonacci=20numbers=20solved=20=E2=9C=93?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../hackerrank/projecteuler/Euler002.Test.cs | 27 +++++++++++++++ .../src/hackerrank/projecteuler/Euler002.cs | 34 +++++++++++++++++++ 2 files changed, 61 insertions(+) create mode 100644 algorithm-exercises-csharp/src/hackerrank/projecteuler/Euler002.Test.cs create mode 100644 algorithm-exercises-csharp/src/hackerrank/projecteuler/Euler002.cs diff --git a/algorithm-exercises-csharp/src/hackerrank/projecteuler/Euler002.Test.cs b/algorithm-exercises-csharp/src/hackerrank/projecteuler/Euler002.Test.cs new file mode 100644 index 0000000..572cd81 --- /dev/null +++ b/algorithm-exercises-csharp/src/hackerrank/projecteuler/Euler002.Test.cs @@ -0,0 +1,27 @@ +namespace algorithm_exercises_csharp.hackerrank.prohecteuler; + +[TestClass] +public class Euler002Test +{ + public class Euler002TestCase { + public int n; public int answer; + } + + // dotnet_style_readonly_field = true + private static readonly Euler002TestCase[] tests = [ + new() { n = 10, answer = 10}, + new() { n = 100, answer = 44} + ]; + + [TestMethod] + public void Euler002ProblemTest() + { + int result; + + foreach (Euler002TestCase test in tests) { + result = Euler002Problem.Euler002(test.n); + Assert.AreEqual(test.answer, result); + } + } +} + diff --git a/algorithm-exercises-csharp/src/hackerrank/projecteuler/Euler002.cs b/algorithm-exercises-csharp/src/hackerrank/projecteuler/Euler002.cs new file mode 100644 index 0000000..430db43 --- /dev/null +++ b/algorithm-exercises-csharp/src/hackerrank/projecteuler/Euler002.cs @@ -0,0 +1,34 @@ +namespace algorithm_exercises_csharp.hackerrank.prohecteuler; + +using System.Diagnostics.CodeAnalysis; + +public class Euler002Problem +{ + [ExcludeFromCodeCoverage] + protected Euler002Problem() {} + + public static int FiboEvenSum(int n) { + int total = 0; + int fibo; + int fibo1 = 1; + int fibo2 = 1; + + while (fibo1 + fibo2 < n) { + fibo = fibo1 + fibo2; + fibo1 = fibo2; + fibo2 = fibo; + + if(fibo % 2 == 0) { + total += fibo; + } + } + + return total; + } + + // Function to find the sum of all multiples of a and b below n + public static int Euler002(int n) + { + return FiboEvenSum(n); + } +} From e70791b474815fd203f88c8d7725644cacca0f1e Mon Sep 17 00:00:00 2001 From: Gonzalo Diaz Date: Wed, 8 May 2024 19:00:03 -0400 Subject: [PATCH 2/2] [Hacker Rank]: Project Euler #2: Even Fibonacci numbers. Documentation added. --- .../src/hackerrank/projecteuler/Euler002.cs | 2 + docs/hackerrank/projecteuler/euler002.md | 47 +++++++++++++++++++ 2 files changed, 49 insertions(+) create mode 100644 docs/hackerrank/projecteuler/euler002.md diff --git a/algorithm-exercises-csharp/src/hackerrank/projecteuler/Euler002.cs b/algorithm-exercises-csharp/src/hackerrank/projecteuler/Euler002.cs index 430db43..fa5a966 100644 --- a/algorithm-exercises-csharp/src/hackerrank/projecteuler/Euler002.cs +++ b/algorithm-exercises-csharp/src/hackerrank/projecteuler/Euler002.cs @@ -1,3 +1,5 @@ +// @link Problem definition [[docs/hackerrank/projecteuler/euler002.md]] + namespace algorithm_exercises_csharp.hackerrank.prohecteuler; using System.Diagnostics.CodeAnalysis; diff --git a/docs/hackerrank/projecteuler/euler002.md b/docs/hackerrank/projecteuler/euler002.md new file mode 100644 index 0000000..27c7fb0 --- /dev/null +++ b/docs/hackerrank/projecteuler/euler002.md @@ -0,0 +1,47 @@ +# [Even Fibonacci numbers](https://www.hackerrank.com/contests/projecteuler/challenges/euler002) + +- Difficulty: #easy +- Category: #ProjectEuler+ + +Each new term in the Fibonacci sequence is generated by adding the previous two terms. +By starting with $ 1 $ and $ 2 $, the first $ 10 $ terms will be: + +$$ 1, 2, 3, 5, 8, 13, 21, 34, 55, 89 $$ + +By considering the terms in the Fibonacci sequence whose values do not exceed +$ N $, find the sum of the even-valued terms. + +## Input Format + +First line contains $ T $ that denotes the number of test cases. This is +followed by $ T $ lines, each containing an integer, $ N $. + +## Constraints + +- $ 1 \leq T \leq 10^5 $ +- $ 10 \leq N \leq 4 × 10^{16} $ + +## Output Format + +Print the required answer for each test case. + +## Sample Input 0 + +```text +2 +10 +100 +``` + +## Sample Output 0 + +```text +10 +44 +``` + +## Explanation 0 + +- For $ N = 10 $, we have $ \{2, 8\} $, sum is $ 10 $. + +- For $ N = 100 $, we have $ \{2, 8, 34 \} $, sum is $ 44 $.