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