From 66a528b171b433a9cb298fba395180445fe1f3e1 Mon Sep 17 00:00:00 2001 From: Maxim Smolskiy Date: Thu, 23 Sep 2021 21:55:18 +0300 Subject: [PATCH] Improve Project Euler problem 014 solution 2 (#4752) --- project_euler/problem_014/sol2.py | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/project_euler/problem_014/sol2.py b/project_euler/problem_014/sol2.py index 7ed68273b..0a58f8d9a 100644 --- a/project_euler/problem_014/sol2.py +++ b/project_euler/problem_014/sol2.py @@ -28,16 +28,16 @@ Which starting number, under one million, produces the longest chain? from __future__ import annotations -def collatz_sequence(n: int) -> list[int]: - """Returns the Collatz sequence for n.""" - sequence = [n] +def collatz_sequence_length(n: int) -> int: + """Returns the Collatz sequence length for n.""" + sequence_length = 1 while n != 1: if n % 2 == 0: n //= 2 else: n = 3 * n + 1 - sequence.append(n) - return sequence + sequence_length += 1 + return sequence_length def solution(n: int = 1000000) -> int: @@ -54,7 +54,7 @@ def solution(n: int = 1000000) -> int: 13255 """ - result = max((len(collatz_sequence(i)), i) for i in range(1, n)) + result = max((collatz_sequence_length(i), i) for i in range(1, n)) return result[1]