Cet applet illustre l'algorithme de décompression LZW.
De haut en bas, on trouve :
- la ligne de saisie des codes à décoder, ces codes doivent être des entiers séparés par des virgules et/ou des espaces,
- les variables de l'algorithme,
- les données produites en sortie par l'algorithme,
- le dictionnaire avec à sa droite une zone de texte qui décrit les opérations en cours,
- des boutons pour exécuter l'algorithme.
Tapez une suite de codes séparés par des virgules dans la zone entrée, par exemple 12,8,18,18,27,29,15,8
, ensuite cliquez sur démarrer en bas.
- Vous pouvez maintenant cliquer sur 1 pas qui s'arrête sur toutes les étapes de l'algorithme.
- Le bouton 1 étape permet faire tous les traitements de la boucle : de la lecture d'un code au finTQ.
- Le bouton finir déroule l'algorithme jusqu'à la fin.
Voici l'algorithme du décodeur
initialiser le dictionnaire avec tous les symboles possibles, exactement ceux du codeur
précédente := vide
TQ code := lire 1 code
si code hors du dictionnaire alors
courante := précédente + premier caractère de précédente
sinon
courante := dictionnaire[code]
finsi
afficher courante
nouvelle := précédente + premier caractère de courante (celui de gauche)
si non dictionnaire.contient(nouvelle), alors dictionnaire.ajouter(nouvelle)
précédente := courante
finTQ
auteur Pierre Nerzic décembre 2007