File tree 1 file changed +14
-8
lines changed
project_euler/problem_014
1 file changed +14
-8
lines changed Original file line number Diff line number Diff line change @@ -25,31 +25,37 @@ def solution(n: int = 1000000) -> int:
25
25
n → n/2 (n is even)
26
26
n → 3n + 1 (n is odd)
27
27
28
- # The code below has been commented due to slow execution affecting Travis.
29
- # >>> solution(1000000)
30
- # 837799
28
+ >>> solution(1000000)
29
+ 837799
31
30
>>> solution(200)
32
31
171
33
32
>>> solution(5000)
34
33
3711
35
34
>>> solution(15000)
36
35
13255
37
36
"""
38
- largest_number = 0
39
- pre_counter = 0
37
+ largest_number = 1
38
+ pre_counter = 1
39
+ counters = {1 : 1 }
40
40
41
- for input1 in range (n ):
42
- counter = 1
41
+ for input1 in range (2 , n ):
42
+ counter = 0
43
43
number = input1
44
44
45
- while number > 1 :
45
+ while True :
46
+ if number in counters :
47
+ counter += counters [number ]
48
+ break
46
49
if number % 2 == 0 :
47
50
number //= 2
48
51
counter += 1
49
52
else :
50
53
number = (3 * number ) + 1
51
54
counter += 1
52
55
56
+ if input1 not in counters :
57
+ counters [input1 ] = counter
58
+
53
59
if counter > pre_counter :
54
60
largest_number = input1
55
61
pre_counter = counter
You can’t perform that action at this time.
0 commit comments