Some checks failed
Test, Build, and Deploy / test-build-deploy (push) Failing after 23s
Three small functions: hist xs build a Hashtbl of count-by-value max_value h Hashtbl.fold to find the max bin total h Hashtbl.fold to sum all bins For the 15-element list [1;2;3;1;4;5;1;2;6;7;1;8;9;1;0]: total = 15 max_value = 5 (the number 1 appears 5 times) product = 75 Companion to bag.ml (string keys) and frequency.ml (char keys) — same Hashtbl.fold + Hashtbl.find_opt pattern, exercised on int keys this time. 71 baseline programs total.
22 lines
425 B
OCaml
22 lines
425 B
OCaml
let hist xs =
|
|
let h = Hashtbl.create 8 in
|
|
List.iter (fun x ->
|
|
let n = match Hashtbl.find_opt h x with
|
|
| Some n -> n + 1
|
|
| None -> 1
|
|
in
|
|
Hashtbl.replace h x n
|
|
) xs;
|
|
h
|
|
|
|
let max_value h =
|
|
Hashtbl.fold (fun _ v acc -> if v > acc then v else acc) h 0
|
|
|
|
let total h =
|
|
Hashtbl.fold (fun _ v acc -> acc + v) h 0
|
|
|
|
;;
|
|
|
|
let h = hist [1;2;3;1;4;5;1;2;6;7;1;8;9;1;0] in
|
|
total h * max_value h
|