Run-length encoding: Difference between revisions
Content added Content deleted
(Updated two D versions) |
No edit summary |
||
Line 1,281: | Line 1,281: | ||
decoded = source: true |
decoded = source: true |
||
</pre> |
</pre> |
||
=={{header|Groovy}}== |
|||
<lang groovy>def rleEncode(text) { |
|||
def encoded = new StringBuilder() |
|||
(text =~ /(([A-Z])\2*)/).each { matcher -> |
|||
encoded.append(matcher[1].size()).append(matcher[2]) |
|||
} |
|||
encoded.toString() |
|||
} |
|||
def rleDecode(text) { |
|||
def decoded = new StringBuilder() |
|||
(text =~ /([0-9]+)([A-Z])/).each { matcher -> |
|||
decoded.append(matcher[2] * Integer.parseInt(matcher[1])) |
|||
} |
|||
decoded.toString() |
|||
}</lang> |
|||
Test code |
|||
<lang groovy>def text = 'WWWWWWWWWWWWBWWWWWWWWWWWWBBBWWWWWWWWWWWWWWWWWWWWWWWWBWWWWWWWWWWWWWW' |
|||
def rleEncoded = rleEncode(text) |
|||
assert rleEncoded == '12W1B12W3B24W1B14W' |
|||
assert text == rleDecode(rleEncoded) |
|||
println "Original Text: $text" |
|||
println "Encoded Text: $rleEncoded"</lang> |
|||
Output: |
|||
<pre>Original Text: WWWWWWWWWWWWBWWWWWWWWWWWWBBBWWWWWWWWWWWWWWWWWWWWWWWWBWWWWWWWWWWWWWW |
|||
Encoded Text: 12W1B12W3B24W1B14W</pre> |
|||
=={{header|Haskell}}== |
=={{header|Haskell}}== |