diff --git a/lib/xmet/series.py b/lib/xmet/series.py new file mode 100644 index 0000000..d7b15d2 --- /dev/null +++ b/lib/xmet/series.py @@ -0,0 +1,24 @@ +from typing import Self + +from xmet.util import cmp +from xmet.list import nearest + +class Series(dict): + def __init__(self): + super().__init__() + + def intersect(self, series: Self): + pairs = nearest(sorted(self.keys(), reverse=True), + sorted(series.keys(), reverse=True)) + + sign_last = None + + for pair in pairs: + v1, v2 = self[pair[0]], series[pair[1]] + + sign = cmp(v1, v2) + + if sign == 0 or (sign_last is not None and sign_last != sign): + return pair[0] + + sign_last = sign