normalizeRanges function

List<(int, int)> normalizeRanges(
  1. List<(int, int)> ranges
)

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;
}