Run-length encoding: Difference between revisions

Kotlin implementation of Run Length Encoding
(→‎Version 2: improvement)
(Kotlin implementation of Run Length Encoding)
Line 1,929:
rld "12W1B12W3B24W1B14W"
"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}}==
Anonymous user