Run-length encoding: Difference between revisions
Content added Content deleted
(→Version 2: improvement) |
(Kotlin implementation of Run Length Encoding) |
||
Line 1,929: | Line 1,929: | ||
rld "12W1B12W3B24W1B14W" |
rld "12W1B12W3B24W1B14W" |
||
"WWWWWWWWWWWWBWWWWWWWWWWWWBBBWWWWWWWWWWWWWWWWWWWWWWWWBWWWWWWWWWWWWWW"</lang> |
"WWWWWWWWWWWWBWWWWWWWWWWWWBBBWWWWWWWWWWWWWWWWWWWWWWWWBWWWWWWWWWWWWWW"</lang> |
||
=={{header|Kotlin}}== |
|||
Tail recursive implementation of Run Length Encoding |
|||
<lang scala> |
|||
tailrec fun runLengthEncoding(text:String,prev:String=""):String { |
|||
if (text.length == 0){ |
|||
return prev |
|||
} |
|||
val initialChar = text.get(0) |
|||
val count = text.takeWhile{ it==initialChar }.count() |
|||
return runLengthEncoding(text.substring(count),prev + "$count$initialChar" ) |
|||
} |
|||
</lang> |
|||
Tests: |
|||
<lang scala> |
|||
assert(runLengthEncoding("TTESSST") == "2T1E3S1T") |
|||
assert(runLengthEncoding("WWWWWWWWWWWWBWWWWWWWWWWWWBBBWWWWWWWWWWWWWWWWWWWWWWWWBWWWWWWWWWWWWWW") |
|||
== "12W1B12W3B24W1B14W") |
|||
</lang> |
|||
=={{header|Lasso}}== |
=={{header|Lasso}}== |