Advertisement
Guest User

Untitled

a guest
Apr 21st, 2020
129
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 0.76 KB | None | 0 0
  1. from itertools import islice
  2. from functools import reduce
  3. from operator import mul
  4.  
  5.  
  6. def window(seq, n=2):
  7.     "from https://stackoverflow.com/a/6822773"
  8.     "Returns a sliding window (of width n) over data from the iterable"
  9.     "   s -> (s0,s1,...s[n-1]), (s1,s2,...,sn), ...                   "
  10.     it = iter(seq)
  11.     result = tuple(islice(it, n))
  12.     if len(result) == n:
  13.         yield result
  14.     for elem in it:
  15.         result = result[1:] + (elem,)
  16.         yield result
  17.  
  18. def f(number: int, consecutive_count: int = 4):
  19.     number_str = (int(i) for i in str(number))
  20.  
  21.     result = max(
  22.         reduce(mul, slide) for slide in window(number_str, 4)
  23.     )
  24.  
  25.     return result
  26.  
  27.  
  28. assert f(1234567) == 4*5*6*7
  29. assert f(11987611118765) == 9*8*7*6
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement