Beefy Boxes and Bandwidth Generously Provided by pair Networks
Think about Loose Coupling
 
PerlMonks  

Re: Vertical number representation for Turing Machine tape display?

by blokhead (Monsignor)
on Sep 20, 2008 at 23:53 UTC ( [id://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
Domain Nodelet?
Node Status?
node history
Node Type: note [id://712780]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others wandering the Monastery: (5)
As of 2024-04-18 01:55 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found