/
euler_014.coffee
36 lines (33 loc) · 983 Bytes
/
euler_014.coffee
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
# Problem 14
# ==========
#
# 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?
#
# NOTE: Once the chain starts the terms are allowed to go above one million.
givenLimit = 1000000
maxCounter = solution = 0
for startingNum in [1..givenLimit]
counter = 0
x = startingNum
while x != 1
if x % 2 == 0 then x /= 2 else x = x * 3 + 1
counter += 1
if counter > maxCounter
maxCounter = counter
solution = startingNum
# TODO: return your answer for this prompt.
return solution