Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- from itertools import islice
- from functools import reduce
- from operator import mul
- def window(seq, n=2):
- "from https://stackoverflow.com/a/6822773"
- "Returns a sliding window (of width n) over data from the iterable"
- " s -> (s0,s1,...s[n-1]), (s1,s2,...,sn), ... "
- it = iter(seq)
- result = tuple(islice(it, n))
- if len(result) == n:
- yield result
- for elem in it:
- result = result[1:] + (elem,)
- yield result
- def f(number: int, consecutive_count: int = 4):
- number_str = (int(i) for i in str(number))
- result = max(
- reduce(mul, slide) for slide in window(number_str, 4)
- )
- return result
- assert f(1234567) == 4*5*6*7
- assert f(11987611118765) == 9*8*7*6
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement