Well, I did my best, but I could only squeeze it down to
177 characters long, assuming no newlines. I think it works.
$"='ox'x5,$_="1 2 3\n4 5 6\n7 8 9 ";{$^=chop$";print"$_$^>";
{<>=~/^(\d)$/&&s/$1/$^/||$.--&&redo}/^($^.){3}|($^.{5}){2}$^
|($^.{7}){2}$^|^.(...$^){3}/sm|8<$.||redo}y/0-9/-/;print
I must congratulate turnstep, it is quite exquisite. I did
steal some stuff from Adam here, I must admit. I think I'm
going to frame that and put it on my wall. I wouldn't be
surprised if someone could still chop a character or two
off, though.