Run-length encoding: Difference between revisions
Content added Content deleted
(added code for sed (may need some polishing)) |
|||
Line 2,505: | Line 2,505: | ||
The encode script: |
The encode script: |
||
<lang sed> |
<lang sed> |
||
/^$/ |
/^$/b |
||
b |
|||
} |
|||
:start |
:start |
||
/^[0-9]/ |
/^[0-9]/b |
||
b |
|||
} |
|||
s/(.)(\1*)(.*)/\21\1\3/ |
s/(.)(\1*)(.*)/\21\1\3/ |
||
:loop |
:loop |
||
Line 2,523: | Line 2,519: | ||
G |
G |
||
s/\n// |
s/\n// |
||
b loop |
b loop } |
||
} |
|||
/^[^0-9]+[0-9]*[0-8][^0-9]/ { |
/^[^0-9]+[0-9]*[0-8][^0-9]/ { |
||
s/^[^0-9]+[0-9]*([0-8]).*/\1/ |
s/^[^0-9]+[0-9]*([0-8]).*/\1/ |
||
Line 2,531: | Line 2,526: | ||
s/\n// |
s/\n// |
||
s/^([1-9]).([^0-9]*[0-9]*)[0-8]/\2\1/ |
s/^([1-9]).([^0-9]*[0-9]*)[0-8]/\2\1/ |
||
b loop |
b loop } |
||
} |
|||
/^[^0-9]+[0-9]+9+[^0-9]/ { |
/^[^0-9]+[0-9]+9+[^0-9]/ { |
||
s/^[^0-9]+[0-9]*([0-8]9+)[^0-9].*/\1/ |
s/^[^0-9]+[0-9]*([0-8]9+)[^0-9].*/\1/ |
||
Line 2,539: | Line 2,533: | ||
s/\n// |
s/\n// |
||
s/^([0-9]+).([^0-9]*[0-9]*)[0-8]9+/\2\1/ |
s/^([0-9]+).([^0-9]*[0-9]*)[0-8]9+/\2\1/ |
||
b loop |
b loop } |
||
} |
|||
s/^([0-9]+.)(.*)/\2\1/ |
s/^([0-9]+.)(.*)/\2\1/ |
||
b start |
b start |
||
Line 2,547: | Line 2,540: | ||
The decode script: |
The decode script: |
||
<lang sed> |
<lang sed> |
||
/^$/ |
/^$/b |
||
b |
|||
} |
|||
:start |
:start |
||
/^[^0-9]/ |
/^[^0-9]/b |
||
b |
|||
} |
|||
:loop |
:loop |
||
/^1[^0-9]/ { |
/^1[^0-9]/ { |
||
s/^1(.)(\1*)(.*)/\3\1\2/ |
s/^1(.)(\1*)(.*)/\3\1\2/ |
||
b start |
b start } |
||
} |
|||
/^[0-9]*[1-9][^0-9]/ { |
/^[0-9]*[1-9][^0-9]/ { |
||
h |
h |
||
Line 2,565: | Line 2,553: | ||
G |
G |
||
s/^([0-8])\n([0-9]*)[1-9]([^0-9])(.*)/\2\1\3\3\4/ |
s/^([0-8])\n([0-9]*)[1-9]([^0-9])(.*)/\2\1\3\3\4/ |
||
b loop |
b loop } |
||
} |
|||
/^[0-9]+0+[^0-9]/ { |
/^[0-9]+0+[^0-9]/ { |
||
h |
h |
||
Line 2,573: | Line 2,560: | ||
G |
G |
||
s/^([0-9]+)\n([0-9]*)[1-9]0+([^0-9])(.*)/\2\1\3\3\4/ |
s/^([0-9]+)\n([0-9]*)[1-9]0+([^0-9])(.*)/\2\1\3\3\4/ |
||
b loop |
b loop } |
||
} |
|||
</lang> |
</lang> |
||