34 lines
741 B
Plaintext
34 lines
741 B
Plaintext
Module RLE_example {
|
|
inp$="WWWWWWWWWWWWBWWWWWWWWWWWWBBBWWWWWWWWWWWWWWWWWWWWWWWWBWWWWWWWWWWWWWW"
|
|
Print "Input: ";inp$
|
|
Function RLE$(r$){
|
|
Function rle_run$(&r$) {
|
|
if len(r$)=0 then exit
|
|
p=1
|
|
c$=left$(r$,1)
|
|
while c$=mid$(r$, p, 1) {p++}
|
|
=format$("{0}{1}",p-1, c$)
|
|
r$=mid$(r$, p)
|
|
}
|
|
def repl$
|
|
while len(r$)>0 {repl$+=rle_run$(&r$)}
|
|
=repl$
|
|
}
|
|
RLE_encode$=RLE$(inp$)
|
|
Print "RLE Encoded: ";RLE_encode$
|
|
Function RLE_decode$(r$) {
|
|
def repl$
|
|
def long m, many=1
|
|
while r$<>"" and many>0 {
|
|
many=val(r$, "INT", &m)
|
|
repl$+=string$(mid$(r$, m, 1), many)
|
|
r$=mid$(r$,m+1)
|
|
}
|
|
=repl$
|
|
}
|
|
RLE_decode$=RLE_decode$(RLE_encode$)
|
|
Print "RLE Decoded: ";RLE_decode$
|
|
Print "Checked: ";RLE_decode$=inp$
|
|
}
|
|
RLE_example
|