RLE: відмінності між версіями

[неперевірена версія][неперевірена версія]
Вилучено вміст Додано вміст
Немає опису редагування
Рядок 93:
print 'Строку: ' . $code . ' вдалося зжати до ' . $encode . '.<br> і ми заощадили ' . (strlen($code) - strlen($encode)) . ' байт.'
?>
</source>
== Реалізації алгоритму мовою Delphi/Pascal ==
<source lang="delphi">
function encode(s:string):string;
var i,k:integer; c:char;
begin
Result:='';
if s='' then exit;
c:=s[1];
k:=1;
for i:=2 to length(s)+1 do
if s[i]=c then inc(k) else
begin
if k>1 then Result:=Result+IntToStr(k);
Result:=Result+c;
c:=s[i];
k:=1;
end;
end;
function decode(s:string):string;
var i,j,c:integer;
newS:string;
begin
i:=1;
while i <= length(s) do
begin
j:=i;
while s[j] in ['0'..'9'] do inc(j);
if j-i > 0 then
begin
for c:=1 to strtoint(copy(s,i,j-i)) do newS := newS + s[j];
delete(s,i,j-i+1);
end else
begin
newS := newS + s[i];
inc(i);
end;
end;
result:= newS;
end;
</source>