ca y est g fait pour écrire comme tu m'as dit.
maintenant il faut ke je fasse la procédure inverse, de lecture....
en fait je susi pas passé en spé...(vive l'échec

)
et VIVE L'ESIEE !
sinon vala mon prog de huffman en caml ke j'avasi fait en mai dernier (en sup

)
[nosmile]___________________________________________________________________________________
type arbre= Feuille of char|Noeud of (arbre*arbre);;
let rec ajoute element liste =
match liste with
[]->[element,1]
|(lettre,nbr)::l-> if element = lettre then (element,(nbr+1))::l
else (lettre,nbr):

ajoute element l);;
let rec frequence texte liste =
if texte = "" then liste
else frequence (sub_string texte 1 ((string_length texte)-1) ) (ajoute texte.[0] liste);;
let double_min liste =
let rec mini_aux av ap mini =
match ap with
[]->av,mini
|(a,b)::l->if b < (snd mini) then (mini_aux (mini::av) l (a,b))
else mini_aux ((a,b)::av) l mini
in ( let truc = mini_aux [] (tl liste) (hd liste)
in ( let truc2 = mini_aux [] (tl (fst truc)) (hd (fst truc))
in (fst truc2,(snd truc,snd truc2))));;
let rec normalise liste =
match liste with
[]->[]
|(a,b)::l->((Feuille a),b):

normalise l);;
let rec arbreuh liste =
match liste with
[a,b]->a
|_->(let resu = (double_min liste) in (
match resu with
(a,((b,c),(d,e))) -> arbreuh (((Noeud (b,d)),(c+e))::a)
));;
let rec encodage texte table_codage =
match texte with
""->[]
|_->(assq texte.[0] table_codage)@(encodage (sub_string texte 1 ((string_length texte)-1)) table_codage);;
let rec codage bitprec tree =
match tree with
(Feuille a)-> [(a,(rev bitprec))]
|Noeud (a,b)-> (codage (0::bitprec) a) @ (codage (1::bitprec) b);;
let compresse texte =
let arbre_huffman = arbreuh (normalise (frequence texte []))
in ( let table_compression = (codage [] (arbre_huffman)) in (
(encodage texte table_compression),arbre_huffman));;
let decompresse liste arbrini =
let rec decode_aux liste tree =
match liste,tree with
[],(Feuille a)->[(char_for_read a)]
|_,(Feuille a)->(char_for_read a):

decode_aux liste arbrini)
|x::l,(Noeud (a,b)) -> if x = 0 then (decode_aux l a) else (decode_aux l b)
in ( concat (decode_aux liste arbrini));;
__________________________________________________________________________
[nosmile]
j'ai édité paske ca métait des simleys dans mon code caml le con de forum
[edit]Edité par farib le 01-12-2001 à 18:50:08[/edit]