Adloun

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.