Refactor problem

This commit is contained in:
2026-04-06 15:35:20 +02:00
parent b485914e01
commit 5cee1f7998

View File

@@ -9,8 +9,9 @@ Solution for problem 008 of Project Euler
https://projecteuler.net/problem=8
"""
import collections
from collections import deque
from itertools import islice
from math import prod
from project_euler_python.utils import timeit
@@ -19,7 +20,7 @@ from project_euler_python.utils import timeit
def sliding_window(iterable, n):
# sliding_window('ABCDEFG', 4) -> ABCD BCDE CDEF DEFG
it = iter(iterable)
window = collections.deque(islice(it, n), maxlen=n)
window = deque(islice(it, n), maxlen=n)
if len(window) == n:
yield tuple(window)
for x in it:
@@ -65,12 +66,10 @@ def compute():
num = NUM.replace("\n", "").replace(" ", "")
adjacent_digits = 13
ans = 0
for nums in sliding_window(num, adjacent_digits):
prod = 1
for num in nums:
prod *= int(num)
if prod > ans:
ans = prod
for digits in sliding_window(num, adjacent_digits):
window_product = prod(int(digit) for digit in digits)
ans = max(ans, window_product)
return ans