Beefy Boxes and Bandwidth Generously Provided by pair Networks Joe
Your skill will accomplish
what the force of many cannot
 
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


Comment on Re: Vertical number representation for Turing Machine tape display?
Select or Download Code

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 web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others taking refuge in the Monastery: (9)
As of 2014-04-17 02:38 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    April first is:







    Results (437 votes), past polls