Range consolidation: Difference between revisions
Content added Content deleted
m (Formatting.) |
|||
Line 523: | Line 523: | ||
func overlap(left, right) { |
func overlap(left, right) { |
||
if max(left:s, left:e) > max(right:s, right:e) { |
if max(left::s, left::e) > max(right::s, right::e) { |
||
max(right:s, right:e) >= min(left:s, left:e) |
max(right::s, right::e) >= min(left::s, left::e) |
||
} else { |
} else { |
||
max(left:s, left:e) >= min(right:s, right:e) |
max(left::s, left::e) >= min(right::s, right::e) |
||
} |
} |
||
} |
} |
||
func consolidate(left, right) { |
func consolidate(left, right) { |
||
(s |
(s: min(min(left::s, left::e), min(right::s, right::e)), e: max(max(left::s, left::e), max(right::s, right::e))) |
||
} |
} |
||
func normalize(range) { |
func normalize(range) { |
||
(s |
(s: min(range::s, range::e), e: max(range::s, range::e)) |
||
} |
} |
||
for list in [ |
for list in [ |
||
[ (s |
[ (s: 1.1, e: 2.2) ], |
||
[ (s |
[ (s: 6.1, e: 7.2), (s: 7.2, e: 8.3) ], |
||
[ (s |
[ (s: 4.0, e: 3.0), (s: 2, e: 1) ], |
||
[ (s |
[ (s: 4.0, e: 3.0), (s: 2, e: 1), (s: -1, e: 2), (s: 3.9, e: 10) ], |
||
[ (s |
[ (s: 1.0, e: 3.0), (s: -6, e: -1), (s: -4, e: -5), (s: 8, e: 2), (s: -6, e: -6) ] |
||
] { |
] { |
||
var z = list.len()-1 |
var z = list.len()-1 |
||
Line 559: | Line 559: | ||
list[i] = normalize(list[i]) |
list[i] = normalize(list[i]) |
||
} |
} |
||
list.sort((x,y) => x:s - y:s) |
list.sort((x,y) => x::s - y::s) |
||
print(list) |
print(list) |
||
}</lang> |
}</lang> |