Magazine Internet

Un Run-length encoding en Python

Publié le 03 juillet 2008 par Kphoen

Le Run-length encoding, que j’abrégerai RLE, est grosso-modo un algorithme de compression de données créé à la base pour réduire la taille des images. Il consiste à indiquer pour chaque même élément le nombre de répétitions consécutives de ce dernier.
Une chaine de caractères comme celle-ci : WWWWWBWWWWWWWBBBWWWWWWWWWWWWBWWWWWWWW, sera donc après passage dans une fonction de compression RLE comme ceci : W5B1W7B3W12B1W8.

Ayant vu quelques personnes sur IRC s’amuser à implémenter leurs versions de cet algorithme dans différents langages, je me suis dit qu’il serait peut-être sympa de m’y essayer moi aussi

^^

Et voilà mon résultat :

#!/usr/bin/env python
#-*- encoding: utf-8 -*-
 
from itertools import groupby
 
to_rle_convert = 'WWWWWBWWWWWWWBBBWWWWWWWWWWWWBWWWWWWWW'
 
def rle(string):
    return (''.join([name+str(len(list(group)))
              for name, group in groupby(string)]))
 
print rle(to_rle_convert)

Si je mets mon code à disposition ici et dans mon portfolio, c’est bien entendu parce que j’attends de vous que vous me donniez vos remarques/suggestions/conseils avisés


Retour à La Une de Logo Paperblog

A propos de l’auteur


Kphoen 5 partages Voir son profil
Voir son blog

l'auteur n'a pas encore renseigné son compte l'auteur n'a pas encore renseigné son compte