Run-length encoding: Difference between revisions
Content added Content deleted
No edit summary |
|||
Line 243: | Line 243: | ||
print final |
print final |
||
}</lang> |
}</lang> |
||
=={{header|BaCon}}== |
|||
<lang qbasic>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 |
|||
data$ = "WWWWWWWWWWWWBWWWWWWWWWWWWBBBWWWWWWWWWWWWWWWWWWWWWWWWBWWWWWWWWWWWWWW" |
|||
PRINT "RLEData: ", data$ |
|||
encoded$ = Rle_Encode$(data$) |
|||
PRINT "Encoded: ", encoded$ |
|||
PRINT "Decoded: ", Rle_Decode$(encoded$)</lang> |
|||
{{out}} |
|||
<pre>RLEData: WWWWWWWWWWWWBWWWWWWWWWWWWBBBWWWWWWWWWWWWWWWWWWWWWWWWBWWWWWWWWWWWWWW |
|||
Encoded: 12W1B12W3B24W1B14W |
|||
Decoded: WWWWWWWWWWWWBWWWWWWWWWWWWBBBWWWWWWWWWWWWWWWWWWWWWWWWBWWWWWWWWWWWWWW |
|||
</pre> |
|||
=={{header|BASIC}}== |
=={{header|BASIC}}== |