У меня есть несколько объектов диапазона, которые мне нужно объединить, чтобы все перекрывающиеся диапазоны исчезают:
case class Range(from:Int, to:Int)
val rangelist = List(Range(3, 40), Range(1, 45), Range(2, 50), etc)
Вот диапазоны:
3 40
1 45
2 50
70 75
75 90
80 85
100 200
По завершении мы получим:
1 50
70 90
100 200
Императивный алгоритм:
Чтобы сделать это в обязательном порядке, нужно создать множество временных переменных, индексированных циклов и т. Д.
Так что мне интересно, есть ли более функциональный подход?
На первый взгляд, исходная коллекция должна иметь возможность действовать как стек, предоставляя pop () PLUS давая возможность удалять элементы по индексу во время итерации по нему, но тогда это уже не будет так функционально.