Refactor problem
This commit is contained in:
@@ -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
|
||||
|
||||
|
||||
Reference in New Issue
Block a user