Advertisement
Guest User

Untitled

a guest
May 25th, 2016
62
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.34 KB | None | 0 0
  1. import sys
  2. from itertools import islice
  3.  
  4.  
  5. def window(iterable, n=2):
  6.     it = iter(iterable)
  7.     result = tuple(islice(it, n))
  8.     if len(result) == n:
  9.         yield result
  10.     for elem in it:
  11.         result = result[1:] + (elem,)
  12.         yield result
  13.  
  14.  
  15. class rolling_window(object):
  16.     def __init__(self, iterable, n):
  17.         self.iterable = iterable
  18.         self.n = n
  19.  
  20.     def __iter__(self):
  21.         return window(self.iterable, self.n)
  22.  
  23.  
  24. exec(sys.stdin.read())
  25. -----------------------------------------------------------------------------------------------------------------
  26. import sys
  27.  
  28.  
  29. def rolling_window(iterable, width):
  30.     class InnerGen:
  31.         def __init__(self, iterable, width):
  32.             self.iterable = iterable
  33.             self.width = width
  34.             self.buffer = []
  35.             self.iterator = self.iterable.__iter__()
  36.  
  37.         def __iter__(self):
  38.             return self
  39.  
  40.         def __next__(self):
  41.             try:
  42.                 self.buffer = self.buffer[1:]
  43.                 while len(self.buffer) < width:
  44.                     self.buffer.append(self.iterator.__next__())
  45.                 return tuple(self.buffer)
  46.             except:
  47.                 self.iterator = self.iterable.__iter__()
  48.                 raise StopIteration()
  49.  
  50.     return InnerGen(iterable, width)
  51.  
  52. exec(sys.stdin.read())
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement