Adloun

OCaml (option informatique) · Chapitre 8 · Exercice de TD

Compter les occurrences

Piles, files et tables de hachage · niveau 2

É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é.

Exercices semblables

Le cours du chapitre · Tous les exercices du chapitre