diff --git a/DIRECTORY.md b/DIRECTORY.md index 51a0e9e..b5f5cb2 100644 --- a/DIRECTORY.md +++ b/DIRECTORY.md @@ -153,6 +153,8 @@ * [Sol2](https://github.com/TheAlgorithms/Ruby/blob/master/project_euler/problem_004/sol2.rb) * Problem 005 * [Sol1](https://github.com/TheAlgorithms/Ruby/blob/master/project_euler/problem_005/sol1.rb) + * Problem 014 + * [Sol1](https://github.com/TheAlgorithms/Ruby/blob/master/project_euler/problem_014/sol1.rb) * Problem 020 * [Sol1](https://github.com/TheAlgorithms/Ruby/blob/master/project_euler/problem_020/sol1.rb) * Problem 021 diff --git a/project_euler/problem_014/sol1.rb b/project_euler/problem_014/sol1.rb new file mode 100644 index 0000000..44ae22f --- /dev/null +++ b/project_euler/problem_014/sol1.rb @@ -0,0 +1,42 @@ +#Problem 14: https://projecteuler.net/problem=14 + +#Problem Statement: +#The following iterative sequence is defined for the set of positive integers: +# +# n → n/2 (n is even) +# n → 3n + 1 (n is odd) +# +#Using the rule above and starting with 13, we generate the following sequence: +# +# 13 → 40 → 20 → 10 → 5 → 16 → 8 → 4 → 2 → 1 +# +#It can be seen that this sequence (starting at 13 and finishing at 1) contains +#10 terms. Although it has not been proved yet (Collatz Problem), it is thought +#that all starting numbers finish at 1. + +#Which starting number, under one million, produces the longest chain? + +def solution?() + index_best_result = 0 + for num in 2..1000000 + index_candidate = 0 + n = num + while n > 1 + if n%2 == 0 + n = n / 2 + else + n = (3*n) + 1 + end + index_candidate +=1 + end + if index_best_result < index_candidate + index_best_result = index_candidate + value = num + end + end + result = value +end + +answer = solution?() +p answer + \ No newline at end of file