Matthias Bisping 303970db51 refactoring
2022-04-07 21:44:04 +02:00

15 lines
426 B
Python

from itertools import takewhile, starmap, islice, repeat
from operator import truth
from funcy import iterate
def chunk_iterable(iterable, chunk_size):
return takewhile(truth, map(tuple, starmap(islice, repeat((iter(iterable), chunk_size)))))
def until_convergence(func, cond, *args, **kwargs):
for a, b in chunk_iterable(iterate(func, *args, **kwargs), chunk_size=2):
if cond(a, b):
return a