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