let latex_sorted_dists oc
string_of_key string_of_dist comp dm =
let len = Array.length dm.dist_elements in
let subarray i t =
Array.append
(Array.sub t 0 i)
(if i < len - 1 then
(Array.sub t (i+1) (len - i - 1))
else
[| |]
)
in
let f i _ =
let teles = subarray i dm.dist_elements in
let tdists = subarray i dm.dist_matrix.(i) in
let t =
Array.mapi
(fun i ele -> (ele, tdists.(i)))
teles
in
Array.sort (fun (_,d1) (_,d2) -> comp d1 d2) t;
t
in
let t_couples = Array.mapi f dm.dist_elements in
let p = Printf.fprintf in
let print i ele =
p oc "\n{\\bf %s}: " (string_of_key ele);
let s = String.concat " $<$ "
(Array.to_list
(Array.map
(fun (key,dist) ->
Printf.sprintf "%s(%s)"
(string_of_key key)
(string_of_dist dist)
)
t_couples.(i)
)
)
in
p oc "%s\n" s
in
Array.iteri print dm.dist_elements