From 1f88313cc4ff52f06b5c99ff2364910d8bc10e1d Mon Sep 17 00:00:00 2001 From: Tomasz Kramkowski Date: Wed, 1 Dec 2021 08:29:46 +0000 Subject: day 1 --- utils.py | 15 +++++++++++++++ 1 file changed, 15 insertions(+) create mode 100644 utils.py (limited to 'utils.py') diff --git a/utils.py b/utils.py new file mode 100644 index 0000000..d322ed0 --- /dev/null +++ b/utils.py @@ -0,0 +1,15 @@ +from collections import deque +from collections.abc import Iterable, Iterator, Generator +from itertools import islice +from typing import TypeVar + +T = TypeVar('T') +def sliding_window(iterable: Iterable[T], n: int) -> Generator[tuple[T, ...], None, None]: + # sliding_window('ABCDEFG', 4) -> ABCD BCDE CDEF DEFG + it: Iterator[T] = iter(iterable) + window: deque[T] = deque(islice(it, n), maxlen=n) + if len(window) == n: + yield tuple(window) + for x in it: + window.append(x) + yield tuple(window) -- cgit v1.2.3-54-g00ecf