Beefy Boxes and Bandwidth Generously Provided by pair Networks
"be consistent"
 
PerlMonks  

Re: Vertical number representation for Turing Machine tape display?

by blokhead (Monsignor)
on Sep 20, 2008 at 23:53 UTC ( #712780=note: print w/replies, xml ) Need Help??


in reply to Vertical number representation for Turing Machine tape display?

The pattern is that the nth row from the bottom (starting with n=0) is made by repeating the sequence "0x1x2x...8x9x", where x is a string of 10n-1 spaces.
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; }
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.

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

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://712780]
help
Chatterbox?
and the grasshoppers chirp...

How do I use this? | Other CB clients
Other Users?
Others examining the Monastery: (4)
As of 2017-03-24 04:26 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?
    Should Pluto Get Its Planethood Back?



    Results (295 votes). Check out past polls.