That nearly perfect on the reading will probably do a lot to help!
That nearly perfect on the reading will probably do a lot to help!
Array.sort compare ranges ;
Array.fold_left
(fun a (min1,max1) ->
match a with [] -> (min1,max1)::a | (min0,max0)::tl ->
if min1 > max0 + 1 then (min1,max1)::a
else (min0, max max0 max1)::tl) [] ranges |>
List.fold_left (fun a (rmin,rmax) -> a + rmax - rmin + 1) 0
Array.sort compare ranges ;
Array.fold_left
(fun a (min1,max1) ->
match a with [] -> (min1,max1)::a | (min0,max0)::tl ->
if min1 > max0 + 1 then (min1,max1)::a
else (min0, max max0 max1)::tl) [] ranges |>
List.fold_left (fun a (rmin,rmax) -> a + rmax - rmin + 1) 0