Files
rose-ash/lib/ocaml/baseline/hist.ml
giles 667dfcfd7c
Some checks failed
Test, Build, and Deploy / test-build-deploy (push) Failing after 23s
ocaml: phase 5.1 hist.ml baseline (Hashtbl int histogram, total * max = 75)
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.
2026-05-09 15:02:13 +00:00

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