mirror of
https://github.com/TheAlgorithms/Ruby
synced 2025-02-10 20:48:11 +01:00
Feat: Project Euler Problem 14
This commit is contained in:
parent
e2f6bd9594
commit
14f538a8cf
2 changed files with 44 additions and 0 deletions
|
@ -153,6 +153,8 @@
|
||||||
* [Sol2](https://github.com/TheAlgorithms/Ruby/blob/master/project_euler/problem_004/sol2.rb)
|
* [Sol2](https://github.com/TheAlgorithms/Ruby/blob/master/project_euler/problem_004/sol2.rb)
|
||||||
* Problem 005
|
* Problem 005
|
||||||
* [Sol1](https://github.com/TheAlgorithms/Ruby/blob/master/project_euler/problem_005/sol1.rb)
|
* [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
|
* Problem 020
|
||||||
* [Sol1](https://github.com/TheAlgorithms/Ruby/blob/master/project_euler/problem_020/sol1.rb)
|
* [Sol1](https://github.com/TheAlgorithms/Ruby/blob/master/project_euler/problem_020/sol1.rb)
|
||||||
* Problem 021
|
* Problem 021
|
||||||
|
|
42
project_euler/problem_014/sol1.rb
Normal file
42
project_euler/problem_014/sol1.rb
Normal file
|
@ -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
|
||||||
|
|
Loading…
Add table
Reference in a new issue