28 lines
599 B
Plaintext
28 lines
599 B
Plaintext
procedure main(arglist)
|
|
|
|
s := "WWWWWWWWWWWWBWWWWWWWWWWWWBBBWWWWWWWWWWWWWWWWWWWWWWWWBWWWWWWWWWWWWWW"
|
|
|
|
write(" s=",image(s))
|
|
write("s1=",image(s1 := rle_encode(s)))
|
|
write("s2=",image(s2 := rle_decode(s1)))
|
|
|
|
if s ~== s2 then write("Encode/Decode problem.")
|
|
else write("Encode/Decode worked.")
|
|
end
|
|
|
|
procedure rle_encode(s)
|
|
es := ""
|
|
s ? while c := move(1) do es ||:= *(move(-1),tab(many(c))) || c
|
|
return es
|
|
end
|
|
|
|
procedure rle_decode(es)
|
|
s := ""
|
|
es ? while s ||:= Repl(tab(many(&digits)),move(1))
|
|
return s
|
|
end
|
|
|
|
procedure Repl(n, c)
|
|
return repl(c,n)
|
|
end
|