(ranges: Range[])
| 10 | } |
| 11 | |
| 12 | function onePass(ranges: Range[]): [Range[], boolean] { |
| 13 | const result: Range[] = []; |
| 14 | let madeChanges = false; |
| 15 | ranges.forEach((range) => { |
| 16 | const index = result.findIndex((r) => r.intersection(range) != null); |
| 17 | // Update existing intersecting range |
| 18 | if (index > -1) { |
| 19 | result[index] = result[index].union(range); |
| 20 | madeChanges = true; |
| 21 | } |
| 22 | // Add new range |
| 23 | else { |
| 24 | result.push(range); |
| 25 | } |
| 26 | }); |
| 27 | return [result, madeChanges]; |
| 28 | } |