sedはgotoもifも組み込みで存在していて楽ですね。

#!/bin/sed -f

# make unary numbers
:
s/[1-9]/&-/g
y/123456789/012345678/
t
s/-0/9-/
t
s/00/0/g

# iterate chars
s/^/;/
s/$/ /
:1
/0[^-]/{
    s/;./; /
    s/0[^-]//g
}
s/;\(.\)/\1;/
s/0-/0/g
s/; .*//
t1
s/ //g