49 lines
1.2 KiB
Plaintext
49 lines
1.2 KiB
Plaintext
mainwin 100 20
|
|
|
|
'In$ ="aaaaaaaaaaaaaaaaaccbbbbbbbbbbbbbbba" ' testing...
|
|
In$ ="WWWWWWWWWWWWBWWWWWWWWWWWWBBBWWWWWWWWWWWWWWWWWWWWWWWWBWWWWWWWWWWWWWW"
|
|
' Out$= "12W1B12W3B24W1B14W"
|
|
|
|
Out$ =Encoded$( In$)
|
|
Inv$ =Decoded$( Out$)
|
|
|
|
print " Supplied string ="; In$
|
|
Print " RLE version ="; Out$
|
|
print " Decoded back to ="; Inv$
|
|
|
|
end
|
|
|
|
function Encoded$( k$)
|
|
r$ =""
|
|
r =1
|
|
for i =2 to len( k$)
|
|
prev$ =mid$( k$, i -1, 1)
|
|
c$ =mid$( k$, i, 1)
|
|
if c$ =prev$ then ' entering a run of this character
|
|
r =r +1
|
|
else ' it occurred only once
|
|
r$ =r$ +str$( r) +prev$
|
|
r =1
|
|
end if
|
|
next i
|
|
r$ =r$ +str$( r) +c$
|
|
Encoded$ =r$
|
|
end function
|
|
|
|
function Decoded$( k$)
|
|
r$ =""
|
|
v =0
|
|
for i =1 to len( k$)
|
|
i$ =mid$( k$, i, 1)
|
|
if instr( "0123456789", i$) then
|
|
v =v *10 +val( i$)
|
|
else
|
|
for m =1 to v
|
|
r$ =r$ +i$
|
|
next m
|
|
v =0
|
|
end if
|
|
next i
|
|
Decoded$ =r$
|
|
end function
|