78 lines
1.3 KiB
Plaintext
78 lines
1.3 KiB
Plaintext
function FBString(lon, cad$)
|
|
# Definimos la función String en BASIC256
|
|
cadena$ = ""
|
|
for a = 1 to lon
|
|
cadena$ += cad$
|
|
next a
|
|
return cadena$
|
|
end function
|
|
|
|
function RLDecode(i$)
|
|
rCount$ = "" : outP$ = ""
|
|
|
|
for Loop0 = 1 to length(i$)
|
|
m$ = mid(i$, Loop0, 1)
|
|
begin case
|
|
case m$ = "0"
|
|
rCount$ += m$
|
|
case m$ = "1"
|
|
rCount$ += m$
|
|
case m$ = "2"
|
|
rCount$ += m$
|
|
case m$ = "3"
|
|
rCount$ += m$
|
|
case m$ = "4"
|
|
rCount$ += m$
|
|
case m$ = "5"
|
|
rCount$ += m$
|
|
case m$ = "6"
|
|
rCount$ += m$
|
|
case m$ = "7"
|
|
rCount$ += m$
|
|
case m$ = "8"
|
|
rCount$ += m$
|
|
case m$ = "9"
|
|
rCount$ += m$
|
|
else
|
|
if length(rCount$) then
|
|
outP$ += FBString(int(rCount$), m$)
|
|
rCount$ = ""
|
|
else
|
|
outP$ += m$
|
|
end if
|
|
end case
|
|
next Loop0
|
|
|
|
RLDecode = outP$
|
|
end function
|
|
|
|
function RLEncode(i$)
|
|
outP$ = ""
|
|
tmp1 = mid(i$, 1, 1)
|
|
tmp2 = tmp1
|
|
rCount = 1
|
|
|
|
for Loop0 = 2 to length(i$)
|
|
tmp1 = mid(i$, Loop0, 1)
|
|
if tmp1 <> tmp2 then
|
|
outP$ += string(rCount) + tmp2
|
|
tmp2 = tmp1
|
|
rCount = 1
|
|
else
|
|
rCount += 1
|
|
end if
|
|
next Loop0
|
|
|
|
outP$ += replace(string(rCount)," ", "")
|
|
outP$ += tmp2
|
|
RLEncode = outP$
|
|
end function
|
|
|
|
input "Type something: ", initial
|
|
encoded$ = RLEncode(initial)
|
|
decoded$ = RLDecode(encoded$)
|
|
print initial
|
|
print encoded$
|
|
print decoded$
|
|
end
|