Run-length encoding: Difference between revisions
Content added Content deleted
(Updated second D entry) |
(Add Nimrod) |
||
Line 2,129: | Line 2,129: | ||
12W1B12W3B24W1B14W |
12W1B12W3B24W1B14W |
||
WWWWWWWWWWWWBWWWWWWWWWWWWBBBWWWWWWWWWWWWWWWWWWWWWWWWBWWWWWWWWWWWWWW</pre> |
WWWWWWWWWWWWBWWWWWWWWWWWWBBBWWWWWWWWWWWWWWWWWWWWWWWWBWWWWWWWWWWWWWW</pre> |
||
=={{header|Nimrod}}== |
|||
{{trans|Python}} |
|||
<lang nimrod>import strutils |
|||
type RunLength = tuple[c: char, n: int] |
|||
proc encode(inp): seq[RunLength] = |
|||
result = @[] |
|||
var count = 1 |
|||
var prev: char |
|||
for c in inp: |
|||
if c != prev: |
|||
if prev != chr(0): |
|||
result.add((prev,count)) |
|||
count = 1 |
|||
prev = c |
|||
else: |
|||
inc(count) |
|||
result.add((prev,count)) |
|||
proc decode(lst: openarray[RunLength]): string = |
|||
result = "" |
|||
for x in lst: |
|||
result.add(repeatChar(x.n, x.c)) |
|||
echo encode("aaaaahhhhhhmmmmmmmuiiiiiiiaaaaaa") |
|||
echo decode([('a', 5), ('h', 6), ('m', 7), ('u', 1), ('i', 7), ('a', 6)])</lang> |
|||
=={{header|Objeck}}== |
=={{header|Objeck}}== |