Bonjour,
je dois faire une ou des fonctions qui me permettre à partir d'une liste de int me donner une string. Ca marche pour le premier caractère mais pour le reste j'ai un problème. Je code mon programme selon l'idée de Huffman.
val k = [0,0,1];
val b = #"*";
fun VerifierNoeudValide([]:int list, []:arbreBinaire list)= b |
VerifierNoeudValide(l:int list, []:arbreBinaire list)= raise Codage0 |
VerifierNoeudValide([]:int list, noeud(_,c,vide,vide)::a:arbreBinaire list)= c |
VerifierNoeudValide(v::l, noeud(e,c,g,d)::a)=
if ( g <> vide ) then VerifierNoeudValide(l, [g])
else VerifierNoeudValide(l,[d])
| VerifierNoeudValide(l, noeud(e,c,g,d)::a:arbreBinaire list) =
if ( compterInt(e::l) = 1 ) then c
else VerifierNoeudValide(l,a);
val car = []:int list ;
fun decodage([]:int list, a:arbreBinaire) = b |
decodage(e::l, a) =
let val temp = VerifierNoeudValide(e::car, [a])
in
if ( temp <> #"*" ) then decodage(l, a)
else b
end;
val s = "";
fun Z(c:char, p:string) =
if ( c <> #"*" ) then implode(c::explode(p))
else raise Codage0;
fun
F(l:int list, a:arbreBinaire)= s |
F(e::l:int list, a:arbreBinaire)=
let val (t) = VerifierNoeudValide(e::car,[a])
in
if ( t <> #"*" ) then implode(t::explode(s))
else Codage0
end ;
(*
(But: Construit l'arbre de Huffman correspondant a la chaine en argument
(Paramètre : entrée : mot: chaine de charactère "EAABB"
( sortie : l'arbre de Huffman noeud(5,?,noeud(2,B,vide,vide),noeud(3,?,noeud(1,E,vide,vide),noeud(2,A,vide,vide)))
*)