Compter les occurrences
Exercice · OCaml (option informatique), chapitre 8 — Piles, files et tables de hachage
Énoncé
Écrire occurrences l qui, d'une string list, renvoie une table associant à chaque mot son nombre d'apparitions.
Corrigé
let occurrences l =
let t = Hashtbl.create 16 in
let rec parcours l =
match l with
| [] -> ()
| mot :: reste ->
(match Hashtbl.find_opt t mot with
| None -> Hashtbl.add t mot 1
| Some n -> Hashtbl.remove t mot; Hashtbl.add t mot (n + 1));
parcours reste
in
parcours l;
t
Pour chaque mot, on consulte sa valeur : absent, on l'ajoute avec 1 ; présent avec n, on le retire puis rajoute avec n + 1 (pas de remplacement au programme). On maintient ainsi une liaison unique par clé.
Les autres exercices de ce chapitre Le cours du chapitre
Un blocage sur cet exercice ? Le tuteur d'Adloun guide par questions, sans donner la réponse.