43 lines
926 B
Plaintext
43 lines
926 B
Plaintext
FUNCTION Rle_Encode$(txt$)
|
|
|
|
LOCAL result$, c$ = LEFT$(txt$, 1)
|
|
LOCAL total = 1
|
|
|
|
FOR x = 2 TO LEN(txt$)
|
|
IF c$ = MID$(txt$, x, 1) THEN
|
|
INCR total
|
|
ELSE
|
|
result$ = result$ & STR$(total) & c$
|
|
c$ = MID$(txt$, x, 1)
|
|
total = 1
|
|
END IF
|
|
NEXT
|
|
|
|
RETURN result$ & STR$(total) & c$
|
|
|
|
END FUNCTION
|
|
|
|
FUNCTION Rle_Decode$(txt$)
|
|
|
|
LOCAL nr$, result$
|
|
|
|
FOR x = 1 TO LEN(txt$)
|
|
IF REGEX(MID$(txt$, x, 1), "[[:digit:]]") THEN
|
|
nr$ = nr$ & MID$(txt$, x, 1)
|
|
ELSE
|
|
result$ = result$ & FILL$(VAL(nr$), ASC(MID$(txt$, x, 1)))
|
|
nr$ = ""
|
|
END IF
|
|
NEXT
|
|
|
|
RETURN result$
|
|
|
|
END FUNCTION
|
|
|
|
rle_data$ = "WWWWWWWWWWWWBWWWWWWWWWWWWBBBWWWWWWWWWWWWWWWWWWWWWWWWBWWWWWWWWWWWWWW"
|
|
|
|
PRINT "RLEData: ", rle_data$
|
|
encoded$ = Rle_Encode$(rle_data$)
|
|
PRINT "Encoded: ", encoded$
|
|
PRINT "Decoded: ", Rle_Decode$(encoded$)
|