Compression rle (part ii)

Description

Ben voilà, c'est la suite de ma dernière source, sur la compression, là ca utilise la méthode de compression RLE (run length encoding) ou compression de longueur. en concret :
compress("aaaaaaaaaaabbbbbbbbbbbbbbcccccccccca");
donnera : a(le caractère qui a pour code ascii 11) b(char 14) c a
etc..
au final ça nous donnera un truc du genre a$b%c*a* (c'est un mauvais exemple...)
pas la pene d'expliquer la décompression...

Source / Exemple :


Chaine claire.<br>
<textarea id="0" onkeyUp="document.getElementById(1).value=compress(this.value);document.getElementById(2).value=decompress(compress(this.value));document.getElementById(3).value=this.value.length-compress(this.value).length">

</textarea><br><br>
Chaine compressée.<br>
<textarea id="1">

</textarea><br><br>
Chaine décompréssée.<br>
<textarea id="2">

</textarea><br><br>
Caractères gagnés.<br>
<input type="text" id="3">
<script>
function compress(text)
{
var ranked=text.split("");
var compstr="";
var k=0;
for(i=0;i<ranked.length;i++)
{
	if(k<255){k++}else{compstr+=ranked[i]+String.fromCharCode(k);k=0;};
	if(ranked[i]!=ranked[i+1]){compstr+=ranked[i]+String.fromCharCode(k);k=0;}
}
return compstr;
}

function decompress(text)
{
var decompstr="";
	for(i=0;i<text.length;i+=2)
	{
		for(k=0;k<text.charCodeAt(i+1);k++)
		{
			decompstr+=text.charAt(i);
		}
	}
return decompstr
}

</script>

Codes Sources

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.