Run-length encoding: Difference between revisions
Content added Content deleted
(→{{header|C}}: semi serious method) |
(→{{header|Euphoria}}: Euphoria example added) |
||
Line 965: | Line 965: | ||
?_assert(decode(encode(PreEncoded)) =:= PreEncoded) |
?_assert(decode(encode(PreEncoded)) =:= PreEncoded) |
||
].</lang> |
].</lang> |
||
=={{header|Euphoria}}== |
|||
<lang euphoria>include misc.e |
|||
function encode(sequence s) |
|||
sequence out |
|||
integer prev_char,count |
|||
if length(s) = 0 then |
|||
return {} |
|||
end if |
|||
out = {} |
|||
prev_char = s[1] |
|||
count = 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} |
|||
return out |
|||
end function |
|||
function decode(sequence s) |
|||
sequence out |
|||
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 |
|||
s = encode("WWWWWWWWWWWWBWWWWWWWWWWWWBBBWWWWWWWWWWWWWWWWWWWWWWWWBWWWWWWWWWWWWWW") |
|||
pretty_print(1,s,{3}) |
|||
puts(1,'\n') |
|||
puts(1,decode(s))</lang> |
|||
Output: |
|||
<pre>{12,'W',1,'B',12,'W',3,'B',24,'W',1,'B',14,'W'} |
|||
WWWWWWWWWWWWBWWWWWWWWWWWWBBBWWWWWWWWWWWWWWWWWWWWWWWWBWWWWWWWWWWWWWW</pre> |
|||
=={{header|F Sharp|F#}}== |
=={{header|F Sharp|F#}}== |