Range consolidation: Difference between revisions
Content added Content deleted
(Added Wren) |
Alextretyak (talk | contribs) (Added 11l) |
||
Line 51: | Line 51: | ||
* [[Set of real numbers]] |
* [[Set of real numbers]] |
||
<br><br> |
<br><br> |
||
=={{header|11l}}== |
|||
{{trans|Python}} |
|||
<lang 11l>F consolidate(ranges) |
|||
F normalize(s) |
|||
R sorted(s.filter(bounds -> !bounds.empty).map(bounds -> sorted(bounds))) |
|||
V norm = normalize(ranges) |
|||
L(&r1) norm |
|||
V i = L.index |
|||
I !r1.empty |
|||
L(j) i + 1 .< norm.len |
|||
V& r2 = norm[j] |
|||
I !r2.empty & r1.last >= r2[0] |
|||
r1 = [r1[0], max(r1.last, r2.last)] |
|||
r2.clear() |
|||
R norm.filter(rnge -> !rnge.empty) |
|||
L(s) [[[1.1, 2.2]], |
|||
[[6.1, 7.2], [7.2, 8.3]], |
|||
[[4.0, 3.0], [2.0, 1.0]], |
|||
[[4.0, 3.0], [2.0, 1.0], [-1.0, -2.0], [3.9, 10.0]], |
|||
[[1.0, 3.0], [-6.0, -1.0], [-4.0, -5.0], [8.0, 2.0], [-6.0, -6.0]]] |
|||
print(String(s)[1 .< (len)-1]‘ => ’String(consolidate(s))[1 .< (len)-1])/lang> |
|||
{{out}} |
|||
<pre> |
|||
[1.1, 2.2] => [1.1, 2.2] |
|||
[6.1, 7.2], [7.2, 8.3] => [6.1, 8.3] |
|||
[4, 3], [2, 1] => [1, 2], [3, 4] |
|||
[4, 3], [2, 1], [-1, -2], [3.9, 10] => [-2, -1], [1, 2], [3, 10] |
|||
[1, 3], [-6, -1], [-4, -5], [8, 2], [-6, -6] => [-6, -1], [1, 8] |
|||
</pre> |
|||
=={{header|Ada}}== |
=={{header|Ada}}== |