Run-length encoding: Difference between revisions
Content added Content deleted
mNo edit summary |
|||
Line 6,076: | Line 6,076: | ||
} |
} |
||
Return</syntaxhighlight> |
Return</syntaxhighlight> |
||
=={{header|V (Vlang)}}== |
|||
<syntaxhighlight lang="Zig"> |
|||
const test = "WWWWWWWWWWWWBWWWWWWWWWWWWBBBWWWWWWWWWWWWWWWWWWWWWWWWBWWWWWWWWWWWWWW" |
|||
fn main() { |
|||
encoded := encode(test) |
|||
println(encoded) |
|||
println(decode(encoded)) |
|||
} |
|||
fn encode(data string) string { |
|||
mut encode :="" |
|||
mut temp := []u8{} |
|||
for key, value in data { |
|||
if key > 1 { |
|||
if value != data[key - 1] { |
|||
encode += temp.len.str() + temp[0].ascii_str() |
|||
temp.clear() |
|||
} |
|||
} |
|||
temp << value |
|||
} |
|||
encode += temp.len.str() + temp[0].ascii_str() |
|||
temp.clear() |
|||
return encode |
|||
} |
|||
fn decode(data string) string { |
|||
mut decode :="" |
|||
mut temp := []u8{} |
|||
for value in data { |
|||
if value.is_digit() == false { |
|||
decode += value.repeat(temp.bytestr().int()) |
|||
temp.clear() |
|||
} |
|||
else {temp << value} |
|||
} |
|||
return decode |
|||
} |
|||
</syntaxhighlight> |
|||
{{out}} |
|||
<pre> |
|||
12W1B12W3B24W1B14W |
|||
WWWWWWWWWWWWBWWWWWWWWWWWWBBBWWWWWWWWWWWWWWWWWWWWWWWWBWWWWWWWWWWWWWW |
|||
</pre> |
|||
=={{header|Wren}}== |
=={{header|Wren}}== |