(*Q1*) let h_exemple s = (Char.code (Char.uppercase_ascii s.[0])) - 65;; h_exemple "z";; type ('a, 'b) dict = { hache: 'a -> int; table_hachage: ('a *'b) list array; largeur: int};; (*Q2*) let creer_dict_vide n hache = { hache=hache; table_hachage=(Array.make n []); largeur=n};; let d_exemple = creer_dict_vide 25 h_exemple;; (*Q3*) let contient cle d = let h = d.hache cle in List.mem cle (List.map fst d.table_hachage.(h));; contient "blablab" d_exemple;; let inserer cle enregistrement d = if contient cle d then failwith "Déjà dans le dictionnaire" else (); let h = d.hache cle in d.table_hachage.(h) <- ((cle, enregistrement)::d.table_hachage.(h));; let valeur cle d = let rec aux acc = match acc with |[] -> raise Not_found |(c, enregistrement)::t -> if c=cle then enregistrement else aux t in aux d.table_hachage.(d.hache cle);; let supprimer cle d = let h = d.hache cle in let rec aux acc li = match li with | [] -> raise Not_found | (c, e)::t -> if c=cle then acc@t else aux ((c,e)::acc) t in d.table_hachage.(h) <- aux [] d.table_hachage.(h);; let modifier cle enregistrement d = supprimer cle d; inserer cle enregistrement d;; inserer "rire" "voilà" d_exemple;; valeur "mais" d_exemple;; supprimer "rigolo" d_exemple;; modifier "blablab" "truc" d_exemple;; d_exemple;;