bonjour à tous,
Je travaille actuellement sur le codage de Huffman.
J'ai réussi à obtenir un arbre mais en revanche, je ne parviens pas à donner le code binaore pour chaque lettre.
ci-dessous les fonctions déjà créées :
Code:def table_frequences (texte): # Renvoie la liste des caractères suivis de leur fréquence respective table =[] texteinit=[] for caractere in texte : if caractere not in table : frequence = texte.count(caractere) table.append(caractere) table.append(frequence) texteinit.append(caractere) return table def noeud_arbre (table): # créer les noeuds pour l'arbre noeud=[] while len(table)>0: noeud.append(table[0:2]) table=table[2:] return noeud def echange (tab,k,l): tabtemp=tab[k] tab[k]=tab[l] tab[l]=tabtemp return (tab) def tri_noeud (table): # cette fonction permet de trier un tableau for i in range (1,len(table)): p=0 while p != len(table)-i : if table[p][1]>table[p+1][1]: echange(table,p,p+1) p=p+1 else : p=p+1 return (table) def arbre_huffman (table): # créer l'arbre de Huffman avec les lettres tri_noeud(table) feuille=[] code=[] for i in range (1,len(table)): nouveau_caractere=[table[0]]+[table[1]] feuille=[nouveau_caractere,table[0][1]+table[1][1]] code=feuille code[0][0][1]="0" code[0][1][1]="1" print('la nouvelle feuille ! ', feuille) print('le code est ',code) tablex=[feuille] for j in range(2,len(table)): tablex= tablex + [table[j]] table=tablex print('Etape ', i, ' ', table) tri_noeud(table) return (table) def arbre_huffman_texte(texte): # l'arbre mais avec le texte en entrée t1=table_frequences (texte) t2=noeud_arbre(t1) t3=tri_noeud(t2) tdefinitif=arbre_huffman(t3) print(tdefinitif)
pourriez-vous m'aider svp ?
merci
-----