RosettaCodeData/Task/Run-length-encoding/Phix/run-length-encoding.phix

31 lines
704 B
Plaintext

function encode(sequence s)
sequence out = {}
integer prev_char,count = 1
if length(s) then
prev_char = s[1]
for i=2 to length(s) do
if s[i]!=prev_char then
out &= {count,prev_char}
prev_char = s[i]
count = 1
else
count += 1
end if
end for
out &= {count,prev_char}
end if
return out
end function
function decode(sequence s)
sequence out = {}
for i=1 to length(s) by 2 do
out &= repeat(s[i+1],s[i])
end for
return out
end function
sequence s = encode("WWWWWWWWWWWWBWWWWWWWWWWWWBBBWWWWWWWWWWWWWWWWWWWWWWWWBWWWWWWWWWWWWWW")
pp(s)
?decode(s)