diff --git a/pyinter/interval_set.py b/pyinter/interval_set.py index 519e80e..69cebf7 100644 --- a/pyinter/interval_set.py +++ b/pyinter/interval_set.py @@ -130,3 +130,24 @@ def difference(self, other): def complement(self): intersection = lambda a, b: a.intersection(b) return functools.reduce(intersection, [interval.complement() for interval in list(self)]) + + def merge(self): + """ + Merge overlapping intervals + For example, {(0,3), (3,6), (5,10]} => {(0,3), (3,10]} + """ + result = IntervalSet() + if self.empty(): + return result + sorted_intervals = sorted(self._data) + now = sorted_intervals[0] + for interval in sorted_intervals[1:]: + if now.upper_value