Range consolidation: Difference between revisions

m (Efficiency improvement)
Line 392:
}
}
 
func min(x, y) {
if x < y {
Line 400:
}
}
 
func overlap(left, right) {
if max(left.:s, left.:e) > max(right.:s, right.:e) {
max(right.:s, right.:e) >= min(left.:s, left.:e)
} else {
max(left.:s, left.:e) >= min(right.:s, right.:e)
}
}
 
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)))
}
 
func normalize(range) {
(s: = min(range.:s, range.:e), e: = max(range.:s, range.:e))
}
 
for list in [
[ (s: = 1.1, e: = 2.2) ],
[ (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: = -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) ]
] {
var z = list.len()-1
Line 438:
list[i] = normalize(list[i])
}
list.sort((x,y) => x.:s - y.:s)
print(list)
}</lang>
}
</lang>
 
{{out}}
Anonymous user