Premier doublon
Exercice · OCaml (option informatique), chapitre 8 — Piles, files et tables de hachage
Énoncé
Écrire premier_doublon l qui renvoie Some x où x est le premier élément de la liste l déjà rencontré auparavant, ou None si tous sont distincts.
Corrigé
let premier_doublon l =
let vus = Hashtbl.create 16 in
let rec parcours l =
match l with
| [] -> None
| x :: reste ->
if Hashtbl.mem vus x then Some x
else begin
Hashtbl.add vus x true;
parcours reste
end
in
parcours l
La table vus joue le rôle d'un ensemble : on y note chaque élément déjà vu (la valeur true importe peu, seule compte la présence de la clé). Dès qu'un élément est déjà présent, c'est le premier doublon. Coût en moyenne, contre avec une recherche par liste.
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.