Adloun

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.