But keep in mind, when things get into the thousands, your 1000s digit will only show up every 1000 characters, so it'll be easy to get "lost" on your TM tape.use POSIX 'ceil'; sub tape_label { my $len = shift() + 1; ## simpler since we'll start at 0 my @cols; my $n_cols = ceil( log($len) / log(10) ); for my $log (0 .. $n_cols-1) { my $pad = 10**$log - 1; my $pattern = join( " " x $pad, 0 .. 9, "" ); unshift @cols, substr( $pattern x ceil($len/10**$log), 0, $len ) +; } return @cols; }
BTW, I think a "ruler" style marking would be easier to read than a long string of "01234567890123456789" ...
use POSIX 'ceil'; sub tape_label { my $len = 5 * ceil(shift() / 5); my $l1 = join "", map { sprintf "%-10s", $_*10 } 0 .. ($len/10); my $l2 = "|" . ("....|" x ($len/5)); return "$l1\n$l2\n"; }
0 10 20 30 40 50 |....|....|....|....|....|....|....|....|....|....|
blokhead
In reply to Re: Vertical number representation for Turing Machine tape display?
by blokhead
in thread Vertical number representation for Turing Machine tape display?
by eric.foxx
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |