Anonymous user
Stable marriage problem: Difference between revisions
m
→{{header|OCaml}}
m (→{{header|OCaml}}: leave a TODO message) |
|||
Line 507:
let
let rec aux ms ws =
match free_men ms with (*TODO free men who still has some w to propose to *)
Line 532:
end
in
let ms, ws = build_structs ~men ~women in▼
aux ms ws
let stable_matching ~men ~women =
▲ let ms, ws = build_structs ~men ~women in
let _, ws = _stable_matching ms ws in
let some = function Some v -> v | None -> "" in▼
let engagements = List.map (fun w -> w.w_name, some w.engaged) ws in▼
(engagements)
Line 569 ⟶ 576:
Array.to_list eng
let () =
let
▲ let some = function Some v -> v | None -> "" in
▲ let engagements = List.map (fun w -> w.w_name, some w.engaged) ws in
▲ let print engs =
▲ List.iter (fun (w,m) ->
▲ Printf.printf " %4s is engaged with %s\n" w m) engs;
▲ Printf.printf "# Engagements %s stable\n"
▲ (if is_stable ~men ~women engs then "are" else "are not")
print engagements;
print_endline "========================";
|