Run-length encoding: Difference between revisions
Content added Content deleted
(Add Julia language) |
|||
Line 1,948: | Line 1,948: | ||
<lang sh>$ jq -n -f Run_length_encoding.jq |
<lang sh>$ jq -n -f Run_length_encoding.jq |
||
"ABBCCC"</lang> |
"ABBCCC"</lang> |
||
=={{header|Julia}}== |
|||
{{works with|Julia|0.6}} |
|||
<lang julia>using IterTools |
|||
encode(str::String) = collect((length(g), first(g)) for g in groupby(first, str)) |
|||
decode(cod::Vector) = join(repeat("$l", n) for (n, l) in cod) |
|||
for original in ["aaaaahhhhhhmmmmmmmuiiiiiiiaaaaaa", "WWWWWWWWWWWWBWWWWWWWWWWWWBBBWWWWWWWWWWWWWWWWWWWWWWWWBWWWWWWWWWWWWWW"] |
|||
encoded = encode(original) |
|||
decoded = decode(encoded) |
|||
println("Original: $original\n -> encoded: $encoded\n -> decoded: $decoded") |
|||
end</lang> |
|||
{{out}} |
|||
<pre>Original: aaaaahhhhhhmmmmmmmuiiiiiiiaaaaaa |
|||
-> encoded: Tuple{Int64,Char}[(5, 'a'), (6, 'h'), (7, 'm'), (1, 'u'), (7, 'i'), (6, 'a')] |
|||
-> decoded: aaaaahhhhhhmmmmmmmuiiiiiiiaaaaaa |
|||
Original: WWWWWWWWWWWWBWWWWWWWWWWWWBBBWWWWWWWWWWWWWWWWWWWWWWWWBWWWWWWWWWWWWWW |
|||
-> encoded: Tuple{Int64,Char}[(12, 'W'), (1, 'B'), (12, 'W'), (3, 'B'), (24, 'W'), (1, 'B'), (14, 'W')] |
|||
-> decoded: WWWWWWWWWWWWBWWWWWWWWWWWWBBBWWWWWWWWWWWWWWWWWWWWWWWWBWWWWWWWWWWWWWW</pre> |
|||
=={{header|K}}== |
=={{header|K}}== |