Adloun

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

Le mot le plus fréquent

Piles, files et tables de hachage · niveau 3 (difficile)

Énoncé

À partir de la table d'occurrences (exercice 6), écrire plus_frequent t qui renvoie le mot de plus grand effectif, à l'aide de Hashtbl.iter.

Corrigé

let plus_frequent t =
  let meilleur = ref "" and maxi = ref 0 in
  Hashtbl.iter
    (fun mot n -> if n > !maxi then begin maxi := n; meilleur := mot end)
    t;
  !meilleur

Hashtbl.iter applique la fonction à chaque liaison (mot, n) ; on retient au passage le maximum dans deux références. L'ordre de parcours d'une table n'est pas spécifié, mais peu importe pour chercher un maximum. (Sur une table vide, la fonction renvoie "" ; on pourrait préférer un string option.)

Exercices semblables

Le cours du chapitre · Tous les exercices du chapitre