31.07.2015 Views

Janvier 2003

Janvier 2003

Janvier 2003

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

sont représentés sous forme d'arbres-codes (les arbres-codes sont des arbres binaires). Le codedonné précédemment en exemple est représenté par l'arbre-codesuivant al:arbre-codealcfgLes caractères sont situés aux feuilles de l'arbre. Il est possible de retrouver le code correspondantà cet arbre-code en parcourant tous les chemins qui vont de la racine aux feuilles del'arbre. Chaque fois que l'on descend sur une branche gauche on ajoute 0 et chaque fois quel'on descend sur une branche droite on ajoute 1 (voir figure suivante).c -> 00d -> 01e -> 10f -> 110g -> 111ccode correspondant à l'arbre-code alf gPour représenter les arbres-codes en OCaml, on définit le type arbre de la façon suivante:type arbre = Feuille of char1 Bin of (arbre * arbre)Par exemple l'arbre-code b1 suivant:~arbre-code ble dest représenté en OCaml par Bin(Feuille3. Définir en OCamll'arbre-code al.le', Feuille 'd').4. Dans cette question on cherche à écrire une fonctionarbre - ver s - code: arbre -7 (char * int List) List, transformant un arbre-code en uncode. Compléter la fonction suivante, en déterminant les expressions «Dl» et «D2».let rec arbre_vers_code =function (Feuille carl) -> [(carl,[])]1 Bin (ag, ad) -> «Ul» @ «U2» ;;Indications: on pourra utiliser la fonction List.map de type('a -7 'b) -7 'a List -7 'b List, qui permet d'appliquer une fonction à tous leséléments d'une liste. Par exemple List.map (function x -7 x * x) [1;2; 6; 5] fournit laliste [1;4; 36; 25] comme résultat.

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!