56 lines
1.3 KiB
Plaintext
56 lines
1.3 KiB
Plaintext
DECLARE FUNCTION RLDecode$ (i AS STRING)
|
|
DECLARE FUNCTION RLEncode$ (i AS STRING)
|
|
|
|
DIM initial AS STRING, encoded AS STRING, decoded AS STRING
|
|
|
|
INPUT "Type something: ", initial
|
|
encoded = RLEncode(initial)
|
|
decoded = RLDecode(encoded)
|
|
PRINT initial
|
|
PRINT encoded
|
|
PRINT decoded
|
|
|
|
FUNCTION RLDecode$ (i AS STRING)
|
|
DIM Loop0 AS LONG, rCount AS STRING, outP AS STRING, m AS STRING
|
|
|
|
FOR Loop0 = 1 TO LEN(i)
|
|
m = MID$(i, Loop0, 1)
|
|
SELECT CASE m
|
|
CASE "0" TO "9"
|
|
rCount = rCount + m
|
|
CASE ELSE
|
|
IF LEN(rCount) THEN
|
|
outP = outP + STRING$(VAL(rCount), m)
|
|
rCount = ""
|
|
ELSE
|
|
outP = outP + m
|
|
END IF
|
|
END SELECT
|
|
NEXT
|
|
RLDecode$ = outP
|
|
END FUNCTION
|
|
|
|
FUNCTION RLEncode$ (i AS STRING)
|
|
DIM tmp1 AS STRING, tmp2 AS STRING, outP AS STRING
|
|
DIM Loop0 AS LONG, rCount AS LONG
|
|
|
|
tmp1 = MID$(i, 1, 1)
|
|
tmp2 = tmp1
|
|
rCount = 1
|
|
|
|
FOR Loop0 = 2 TO LEN(i)
|
|
tmp1 = MID$(i, Loop0, 1)
|
|
IF tmp1 <> tmp2 THEN
|
|
outP = outP + LTRIM$(RTRIM$(STR$(rCount))) + tmp2
|
|
tmp2 = tmp1
|
|
rCount = 1
|
|
ELSE
|
|
rCount = rCount + 1
|
|
END IF
|
|
NEXT
|
|
|
|
outP = outP + LTRIM$(RTRIM$(STR$(rCount)))
|
|
outP = outP + tmp2
|
|
RLEncode$ = outP
|
|
END FUNCTION
|