vinceLe 03/04/2012 à 21:01
Voilà, j'ai des lignes à compresser
La ligne d'origine est sous la forme de N valeurs successives situées dans une espèce de tableau (donc on récupère la valeur au nième index sans problème)
L'algo doit marcher pour des valeurs sur 1, 2 ou 4 bits (l'ensmble des lignes est exprimée sur le même nombre de bits)
La "compression" est proche du format RLE :
- On précise sur un bit un mode pour le bloc à venir (0 pour compact, 1 pour littéral)
------ Si c'est le mode 0
---------- 4bits de répétition (+1)
---------- les bits (1,2ou4) de la valeur à répéter
------ Si c'est le mode 1
---------- 4bits de comptage (+1)
---------- les bits (1,2ou4) de la valeur n°0
---------- les bits (1,2ou4) de la valeur n°1
---------- les bits (1,2ou4) de la valeur n°2
---------- les bits (1,2ou4) de la valeur n°N...
le problème est donc de trouver la méthode optimale pour encoder une ligne en une suite de bits la plus courte possible...
pour vous faire une idée, si j'ai :
0123000000111231322222
je peux coder ça
1 - litéral
0011 - 3+1 pixels
00
01
10
11
0 - compact
0101 - 5+1 répétitions
00
0 - compact
0010 - 2+1 répétitions
01
1 - litéral
0011 3+1 pixels
10
11
01
11
0 - compact
0100 4+1 répétitions
10
merci d'avance si vous avez des idées...