28 lines
645 B
Plaintext
28 lines
645 B
Plaintext
program rle;
|
|
test := "WWWWWWWWWWWWBWWWWWWWWWWWWBBBWWWWWWWWWWWWWWWWWWWWWWWWBWWWWWWWWWWWWWW";
|
|
|
|
print("Input:");
|
|
print(test);
|
|
print("Encoded:");
|
|
print(enc := rlencode(test));
|
|
print("Decoded:");
|
|
print(rldecode(enc));
|
|
|
|
proc rlencode(s);
|
|
loop while s /= "" do
|
|
part := span(s, s(1));
|
|
r +:= str #part + part(1);
|
|
end loop;
|
|
return r;
|
|
end proc;
|
|
|
|
proc rldecode(s);
|
|
loop while s /= "" do
|
|
num := span(s, "0123456789");
|
|
item := notany(s, "");
|
|
r +:= val num * item;
|
|
end loop;
|
|
return r;
|
|
end proc;
|
|
end program;
|