first commit
This commit is contained in:
34
p14/solution.py
Normal file
34
p14/solution.py
Normal file
@@ -0,0 +1,34 @@
|
||||
def solution(n):
|
||||
n_steps = {}
|
||||
i = 1
|
||||
number = 1
|
||||
chain = [1]
|
||||
result = (i, len(chain))
|
||||
while i < n:
|
||||
if number == 1:
|
||||
chain_length = len(chain)
|
||||
for j in range(chain_length-1):
|
||||
n_steps[chain[j]] = chain_length - j
|
||||
if chain_length > result[1]:
|
||||
result = (i, chain_length)
|
||||
i += 1
|
||||
number = i
|
||||
chain = [i]
|
||||
if number in n_steps:
|
||||
chain_length = len(chain) + n_steps[number] - 1
|
||||
for j in range(len(chain)-1):
|
||||
n_steps[chain[j]] = chain_length - j
|
||||
if chain_length > result[1]:
|
||||
result = (i, chain_length)
|
||||
i += 1
|
||||
number = i
|
||||
chain = [i]
|
||||
elif number % 2 == 0:
|
||||
number //= 2
|
||||
chain.append(number)
|
||||
else:
|
||||
number = 3*number +1
|
||||
chain.append(number)
|
||||
return result
|
||||
|
||||
print(solution(1000000))
|
||||
Reference in New Issue
Block a user