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 = min(min(left:s, left:e), min(right:s, right:e)), e = max(max(left:s, left:e), max(right:s, right:e)))
(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 = min(range:s, range:e), e = max(range:s, range:e))
(s: min(range::s, range::e), e: max(range::s, range::e))
}
}
for list in [
for list in [
[ (s = 1.1, e = 2.2) ],
[ (s: 1.1, e: 2.2) ],
[ (s = 6.1, e = 7.2), (s = 7.2, e = 8.3) ],
[ (s: 6.1, e: 7.2), (s: 7.2, e: 8.3) ],
[ (s = 4.0, e = 3.0), (s = 2, e = 1) ],
[ (s: 4.0, e: 3.0), (s: 2, e: 1) ],
[ (s = 4.0, e = 3.0), (s = 2, e = 1), (s = -1, e = 2), (s = 3.9, e = 10) ],
[ (s: 4.0, e: 3.0), (s: 2, e: 1), (s: -1, e: 2), (s: 3.9, e: 10) ],
[ (s = 1.0, e = 3.0), (s = -6, e = -1), (s = -4, e = -5), (s = 8, e = 2), (s = -6, e = -6) ]
[ (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>