Ben böyle (! Keyfi uzunluğu) bakmak çok uzun tamsayı dizileri var:
0000000001110002220033333
Şimdi gibi sıkıştırılmış bir şey içine bu dizeyi dönüştürmek için bazı algoritma gerekir
a9b3a3c3a2d5
Böylece ve, "daha sonra 3 kez, daha sonra 3 kez b, 9 kez" anlamına gelir burada "a" için 2, "c" ve 3 için, "d", 1 için, 0 için "b" duruyor.
How would you do that? So far nothing suitable came to my mind, and I had no luck with google because I didn't really know what to search for. What is this kind of encoding / compression called?
PS: Ben PHP ile kodlama yapmak için gidiyorum, ve JavaScript olarak çözme.
Edit: Hepinize teşekkür ederim!
Ben kodlama için bu fonksiyonu ile sona erdi:
protected function numStringToRle($s){
$rle = '';
$count = 1;
$len = strlen($s);
for($i = 0; $i < $len; $i++){
if($i != $len && isset($s[$i+1]) && $s[$i] == $s[$i+1]){
$count++;
} else {
$rle .= chr($s[$i] + 97).( $count == 1 ? '' : $count);
$count = 1;
}
}
return $rle;
}
Ve çözmesi için bu:
var decodeCoords = function(str) {
str = str.replace(/(.)(\d+)/g, function(_, x, n) {
return new Array(parseInt(n, 10) + 1).join(x);
});
return str.
replace(/a/g, '0').
replace(/b/g, '1').
replace(/c/g, '2').
replace(/d/g, '3');
};