normalizeRanges function
Implementation
List<(int, int)> normalizeRanges(List<(int, int)> ranges) {
final result = <(int, int)>[];
final temp = ranges.toList();
temp.sort(
(a, b) {
if (a.$1 > b.$1) {
return 1;
} else if (a.$1 < b.$1) {
return -1;
} else {
return a.$2 - b.$2;
}
},
);
for (var i = 0; i < temp.length; i++) {
var range = temp[i];
result.add(range);
checkRange(range);
var k = i + 1;
for (; k < temp.length; k++) {
final next = temp[k];
checkRange(next);
if (next.$1 <= range.$2 + 1) {
range = (range.$1, range.$2 > next.$2 ? range.$2 : next.$2);
result.last = range;
} else {
k--;
break;
}
}
i = k;
}
return result;
}