Mazes, Patterns, and Textiles Notes

From Maze

Revision as of 00:50, 26 May 2010 by Nickm (Talk | contribs)
Jump to: navigation, search

7. Mazes, Patterns, and Textiles

Is the output of this program truly a maze? The answer to this question has to do with whether a maze must function to constrain something or whether a visual representation of a maze is itself a maze; furthermore, there is the issue of whether a maze needs to be solvable. The program is considered alongside more elaborate maze generators and in other frames: That of a textile pattern, for instance.



Here's a 103 byte C64 demo (done in assembly, of course):

http://www.pouet.net/prod.php?which=52548

And two that are 64 bytes each:

http://www.pouet.net/prod.php?which=30887 http://www.pouet.net/prod.php?which=30008

None of this is as elite as Ian's 46-character implementation of "10 PRINT CHR$(109+RND(1)*2);:GOTO 10" of course.



I moved the algorithm behind 10 PRINT CHR$(109+RND(1)*2); : GOTO 10 from its platform to explore the visual design space with more flexibility.

The quick result is posted here, with source (requires java in browser): http://reas.com/rnd/



10 print chr$(109+rnd(1)*2); : goto 10

little endian


init xor mask CF in mem loc 9 to 16
init seed to A1 (arbitrary) in mem loc 0 to 7

$ \
/ /
\ + } } } } } + } } + } } + } + } + } + }   }   } + } +  \
/                                                        /

init mem loc 17 to 47 (ascii)

\ } +++++++++++++++++++++++++++++++++++++++++++++++ \
/                                                   /

int mem loc 18 to 92 (ascii)

\ } ++++++++++++++++++++++++++++++ \
 / ++++++++++++++++++++++++++++++ /
 \ ++++++++++++++++++++++++++++++++ \
/         {{{{{{{{{{{{{{{{{{         /

8 bit maximmum cycle (hence the CF xor mask) LFSR pseudo random number generator (same one Ian used in assembly)

left shift 0 to 7 (little endian, so shift right)
carry bit = mem loc 8
!
/                                                                                                                     \
                 /  - {  \          /  - {  \          /  - {  \          /  - {  \
\} } } } } } } v }^ { !/ !\ !/  { v }^ { !/ !\ !/  { v }^ { !/ !\ !/  { v }^ { !/ !\ !/   \
                      {                  {                  {                  {
              \ }     ^ + { /    \ }     ^ + { /    \ }     ^ + { /    \ }     ^ + { /   
          /                                                                              /

                 /  - {  \          /  - {  \          /  - {  \          /  - {  \
          \ { v }^ { !/ !\ !/  { v }^ { !/ !\ !/  { v }^ { !/ !\ !/  { v }^ { !/ !\ !/  v  !/  \
                      {                  {                  {                  {        \ - /
              \ }     ^ + { /    \ }     ^ + { /    \ }     ^ + { /    \ }     ^ + { /   

xor current rand with CF if carry = 0 
/   {{{{{{{{  v  }}}}}}}}                                                                       /
             \  {{{{{{{{                                                                                       \
xor bank: xor bits 0 to 7 with bits 9 to 16 modify 0 to 7 

bits 0 9                                               bits 1 10
  /+                         \             /+ {                        \
  \{{{{{{{{{ \                             \{{{{{{{{{ \
\ v }}}}}}}}} ^ !/ {{{{{{{{{ !\ !/       } v }}}}}}}}} ^ !/ {{{{{{{{{{ !\ !/   \ 
  /-                            /           /- {                          /
  \{{{{{{{{{ \                              \{{{{{{{{{ \
 \ }}}}}}}}} ^  /                         \  }}}}}}}}} ^ /

/                                                                              /
bits 2 11                                               bits 3 12
     /+ {{                         \               /+ {{{                        \
     \{{{{{{{{{ \                                  \{{{{{{{{{ \
\ }} v }}}}}}}}} ^  !/ {{{{{{{{{{{ !\ !/       }}} v }}}}}}}}} ^ !/ {{{{{{{{{{{{ !\ !/   \ 
      /- {{                           /             /- {{{                          /
      \{{{{{{{{{ \                                  \{{{{{{{{{ \
    \  }}}}}}}}} ^  /                             \  }}}}}}}}} ^ /

/                                                                                        /
bits 4 13                                               bits 5 14
       /+ {{{{                           \                 /+ {{{{{                        \
       \{{{{{{{{{ \                                        \{{{{{{{{{ \
\ }}}} v }}}}}}}}} ^    !/ {{{{{{{{{{{{{ !\ !/       }}}}} v }}}}}}}}} ^ !/ {{{{{{{{{{{{{{ !\ !/    \
        /- {{{{                             /               /- {{{{{                          /
        \{{{{{{{{{ \                                        \{{{{{{{{{ \
      \  }}}}}}}}} ^    /                                 \  }}}}}}}}} ^ /

/                                                                                                   /
bits 6 15                                               bits 7 16
         /+ {{{{{{                           \                   /+ {{{{{{{                        \
         \{{{{{{{{{ \                                            \{{{{{{{{{ \                                  !
\ }}}}}} v }}}}}}}}} ^    !/ {{{{{{{{{{{{{{{ !\ !/       }}}}}}} v }}}}}}}}} ^ !/ {{{{{{{{{{{{{{{{ !\ !/        \
          /- {{{{{{                             /                 /- {{{{{{{                          /
          \{{{{{{{{{ \                                            \{{{{{{{{{ \
        \  }}}}}}}}} ^    /                                     \  }}}}}}}}} ^ /
End of 8 bit LFSR RNG

print ascii 47 if bit 8 is 0 else print ascii 92
/                                                                                                               /
\ }}}}}}}} v }}}}}}}}}  .  !/ {{{{{{{{{{{{{{{{{                                                                       /
          \ }}}}}}}}}} . { /10 print chr$(109+rnd(1)*2); : goto 10

$ \
/ /
\ + } } } } } + } } + } } + } + } + } + }   }   } + } +  \
/                                                        /
\ } +++++++++++++++++++++++++++++++++++++++++++++++ \
/                                                   /
\ } ++++++++++++++++++++++++++++++ \
 / ++++++++++++++++++++++++++++++ /
 \ ++++++++++++++++++++++++++++++++ \
/         {{{{{{{{{{{{{{{{{{         /
!
/                                                                                                                     \
                 /  - {  \          /  - {  \          /  - {  \          /  - {  \
\} } } } } } } v }^ { !/ !\ !/  { v }^ { !/ !\ !/  { v }^ { !/ !\ !/  { v }^ { !/ !\ !/   \
                      {                  {                  {                  {
              \ }     ^ + { /    \ }     ^ + { /    \ }     ^ + { /    \ }     ^ + { /   
          /                                                                              /

                 /  - {  \          /  - {  \          /  - {  \          /  - {  \
          \ { v }^ { !/ !\ !/  { v }^ { !/ !\ !/  { v }^ { !/ !\ !/  { v }^ { !/ !\ !/  v  !/  \
                      {                  {                  {                  {        \ - /
              \ }     ^ + { /    \ }     ^ + { /    \ }     ^ + { /    \ }     ^ + { /   


/   {{{{{{{{  v  }}}}}}}}                                                                       /
             \  {{{{{{{{                                                                                       \
  /+                         \             /+ {                        \
  \{{{{{{{{{ \                             \{{{{{{{{{ \
\ v }}}}}}}}} ^ !/ {{{{{{{{{ !\ !/       } v }}}}}}}}} ^ !/ {{{{{{{{{{ !\ !/   \ 
  /-                            /           /- {                          /
  \{{{{{{{{{ \                              \{{{{{{{{{ \
 \ }}}}}}}}} ^  /                         \  }}}}}}}}} ^ /
/                                                                              /
     /+ {{                         \               /+ {{{                        \
     \{{{{{{{{{ \                                  \{{{{{{{{{ \
\ }} v }}}}}}}}} ^  !/ {{{{{{{{{{{ !\ !/       }}} v }}}}}}}}} ^ !/ {{{{{{{{{{{{ !\ !/   \ 
      /- {{                           /             /- {{{                          /
      \{{{{{{{{{ \                                  \{{{{{{{{{ \
    \  }}}}}}}}} ^  /                             \  }}}}}}}}} ^ /
/                                                                                        /
       /+ {{{{                           \                 /+ {{{{{                        \
       \{{{{{{{{{ \                                        \{{{{{{{{{ \
\ }}}} v }}}}}}}}} ^    !/ {{{{{{{{{{{{{ !\ !/       }}}}} v }}}}}}}}} ^ !/ {{{{{{{{{{{{{{ !\ !/    \
        /- {{{{                             /               /- {{{{{                          /
        \{{{{{{{{{ \                                        \{{{{{{{{{ \
      \  }}}}}}}}} ^    /                                 \  }}}}}}}}} ^ /
/                                                                                                   /
         /+ {{{{{{                           \                   /+ {{{{{{{                        \
         \{{{{{{{{{ \                                            \{{{{{{{{{ \                                  !
\ }}}}}} v }}}}}}}}} ^    !/ {{{{{{{{{{{{{{{ !\ !/       }}}}}}} v }}}}}}}}} ^ !/ {{{{{{{{{{{{{{{{ !\ !/        \
          /- {{{{{{                             /                 /- {{{{{{{                          /
          \{{{{{{{{{ \                                            \{{{{{{{{{ \
        \  }}}}}}}}} ^    /                                     \  }}}}}}}}} ^ /
/                                                                                                               /
\ }}}}}}}} v }}}}}}}}}  .  !/ {{{{{{{{{{{{{{{{{                                                                       /
          \ }}}}}}}}}} . { /\/////\////\//\\\\\/\/\\\\/\///\/\//\/\\\///\///\//\//\/\///\\//\/\\/\/\/\/\\/\\///\/\\\\\//\\///////\\/\\\/\//\///\\\\\\/////\\\/\/\//\\/\/\\////\\///\\/\////\\\\///\\\//\\\\/\\\//\//\\//\\/\\/\\\\//\/\/\\\/\\\\\\\\/\\/\//\\\////\/\/\//////\/\\//\\\/\\//\/////\////\//\\\\\/\/\\\\/\///\/\//\/\\\///\///\//\//\/\///\\//\/\\/\/\/\/\\/\\///\/\\\\\//\\///////\\/\\\/\//\///\\\\\\/////\\\/\/\//\\/\/\\////\\///\\/\////\\\\///\\\//\\\\/\\\//\//\\//\\/\\/\\\\//\/\/\\\/\\\\\\\\/\\/\//\\\////\/\/\//////\/\\//\\\/\\//\/////\////\//\\\\\/\/\\\\/\///\/\//\/\\\///\///\//\//\/\///\\//\/\\/\/\/\/\\/\\///\/\\\\\//\\///////\\/\\\/\//\///\\\\\\/////\\\/\/\//\\/\/\\////\\///\\/\////\\\\///\\\//\\\\/\\\//\//\\//\\/\\/\\\\//\/\/\\\/\\\\\\\\/\\/\//\\\////\/\/\//////\/\\//\\\/\\//\/////\////\//\\\\\/\/\\\\/\///\/\//\/\\\///\///\//\//\/\///\\//\/\\/\/\/\/\\/\\///\/\\\\\//\\///////\\/\\\/\//\///\\\\\\/////\\\/\/\//\\/\/\\////\\///\\/\////\\\\///\\\//\\\\/\\\//\//\\//\\/\\/\\\\//\/\/\\\/\\\\\\\\/\\/\//\\\////\/\/\//////\/\\//\\\/\\//\/////\////\//\\\\\/\/\\\\/\///\/\//\/\\\///\///\//\//\/\///\\//\/\\/\/\/\/\\/\\///\/\\\\\//\\///////\\/\\\/\//\///\\\\\\/////\\\/\/\//\\/\/\\////\\///\\/\////\\\\///\\\//\\\\/\\\//\//\\//\\/\\/\\\\//\/\/\\\/\\\\\\\\/\\/\//\\\////\/\/\//////\/\\//\\\/\\//\/////\////\//\\\\\/\/\\\\/\///\/\//\/\\\///\///\//\//\/\///\\//\/\\/\/\/\/\\/\\///\/\\\\\//\\///////\\/\\\/\//\///\\\\\\/////\\\/\/\//\\/\/\\////\\///\\/\////\\\\///\\\//\\\\/\\\//\//\\//\\/\\/\\\\//\/\/\\\/\\\\\\\\/\\/\//\\\////\/\/\//////\/\\//\\\/\\//\/////\////\//\\\\\/\/\\\\/\///\/\//\/\\\///\///\//\//\/\///\\//\/\\/\/\/\/\\/\\///\/\\\\\//\\///////\\/\\\/\//\///\\\\\\/////\\\/\/\//\\/\/\\////\\///\\/\////\\\\///\\\//\\\\/\\\//\//\\//\\/\\/\\\\//\/\/\\\/\\\\\\\\/\\/\//\\\////\/\/\//////\/\\//\\\/\\//\/////\////\//\\\\\/\/\\\\/\///\/\//\/\\\///\///\//\//\/\///\\//\/\\/\/\/\/\\/\\///\/\\\\\//\\///////\\/\\\/\//\///\\\\\\/////\\\/\/\//\\/\/\\////\\///\\/\////\\\\///\\\//\\\\/\\\//\//\\//\\/\\/\\\\//\/\/\\\/\\\\\\\\/\\/\//\\\////\/\/\//////\/\\//\\\/\\//\/////\////\//\\\\\/\/\\\\/\///\/\//\/\\\///\///\//\//\/\///\\//\/\\/\/\/\/\\/\\///\/\\\\\//\\///////\\/\\\/\//\///\\\\\\/////\\\/\/\//\\/\/\\////\\///\\/\////\\\\///\\\//\\\\/\\\//\//\\//\\/\\/\\\\//\/\/\\\/\\\\\\\\/\\/\//\\\////\/\/\//////\/\\//\\\/\\//\/////\////\//\\\\\/\/\\\\/\///\/\//\/\\\///\///\//\//\/\///\\//\/\\/\/\/\/\\/\\///\/\\\\\//\\///////\\/\\\/\//\///\\\\\\/////\\\/\/\//\\/\/\\////\\///\\/\////\\\\///\\\//\\\\/\\\//\//\\//\\/\\/\\\\//\/\/\\\/\\\\\\\\/\\/\//\\\////\/\/\//////\/\\//\\\/\\//\/////\////\//\\\\\/\/\\\\/\///\/\//\/\\\///\///\//\//\/\///\\//\/\\/\/\/\/\\/\\///\/\\\\\//\\///////\\/\\\/\//\///\\\\\\/////\\\/\/\//\\/\/\\////\\///\\/\////\\\\///\\\//\\\\/\\\//\//\\//\\/\\/\\\\//\/\/\\\/\\\\\\\\/\\/\//\\\////\/\/\//////\/\\//\\\/\\//\/////\////\//\\\\\/\/\\\\/\///\/\//\/\\\///\///\//\//\/\///\\//\/\\/\/\/\/\\/\\///\/\\\\\//\\///////\\/\\\/\//\///\\\\\\/////\\\/\/\//\\/\/\\////\\///\\/\////\\\\///\\\//\\\\/\\\//\//\\//\\/\\/\\\\//\/\/\\\/\\\\\\\\/\\/\//\\\////\/\/\//////\/\\//\\\/\\//\/////\////\//\\\\\/\/\\\\/\///\/\//\/\\\///\///\//\//\/\///\\//\/\\/\/\/\/\\/\\///\/\\\\\//\\///////\\/\\\/\//\///\\\\\\/////\\\/\/\//\\/\/\\////\\///\\/\////\\\\///\\\//\\\\/\\\//\//\\//\\/\\/\\\\//\/\/\\\/\\\\\\\\/\\/\//\\\////\/\/\//////\/\\//\\\/\\//\/////\////\//\\\\\/\/\\\\/\///\/\//\/\\\///\///\//\//\/\///\\//\/\\/\/\/\/\\/\\///\/\\\\\//\\///////\\/\\\/\//\///\\\\\\/////\\\/\/\//\\/\/\\////\\///\\/\////\\\\///\\\//\\\\/\\\//\//\\//\\/\\/\\\\//\/\/\\\/\\\\\\\\/\\/\//\\\////\/\/\//////\/\\//\\\/\\//\/////\////\//\\\\\/\/\\\\/\///\/\//\/\\\///\///\//\//\/\///\\//\/\\/\/\/\/\\/\\///\/\\\\\//\\///////\\/\\\/\//\///\\\\\\/////\\\/\/\//\\/\/\\////\\///\\/\////\\\\///\\\//\\\\/\\\//\//\\//\\/\\/\\\\//\/\/\\\/\\\\\\\\/\\/\//\\\////\/\/\//////\/\\//\\\/\\//\/////\////\//\\\\\/\/\\\\/\///\/\//\/\\\///\///\//\//\/\///\\//\/\\/\/\/\/\\/\\///\/\\\\\//\\///////\\/\\\/\//\///\\\\\\/////\\\/\/\//\\/\/\\////\\///\\/\////\\\\///\\\//\\\\/\\\//\//\\//\\/\\/\\\\//\/\/\\\/\\\\\\\\/\\/\//\\\////\/\/\//////\/\\//\\\/\\//\/////\////\//\\\\\/\/\\\\/\///\/\//\/\\\///\///\//\//\/\///\\//\/\\/\/\/\/\\/\\///\/\\\\\//\\///////\\/\\\/\//\///\\\\\\/////\\\/\/\//\\/\/\\////\\///\\/\////\\\\///\\\//\\\\/\\\//\//\\//\\/\\/\\\\//\/\/\\\/\\\\\\\\/\\/\//\\\////\/\/\//////\/\\//\\\/\\//\/////\////\//\\\\\/\/\\\\/\///\/\//\/\\\///\///\//\//\/\///\\//\/\\/\/\/\/\\/\\///\/\\\\\//\\///////\\/\\\/\//\///\\\\\\/////\\\/\/\//\\/\/\\////\\///\\/\////\\\\///\\\//\\\\/\\\//\//\\//\\/\\/\\\\//\/\/\\\/\\\\\\\\/\\/\//\\\////\/\/\//////\/\\//\\\/\\//\/////\////\//\\\\\/\/\\\\/\///\/\//\/\\\///\///\//\//\/\///\\//\/\\/\/\/\/\\/\\///\/\\\\\//\\///////\\/\\\/\//\///\\\\\\/////\\\/\/\//\\/\/\\////\\///\\/\////\\\\///\\\//\\\\/\\\//\//\\//\\/\\/\\\\//\/\/\\\/\\\\\\\\/\\/\//\\\////\/\/\//////\/\\//\\\/\\//\/////\////\//\\\\\/\/\\\\/\///\/\//\/\\\///\///\//\//\/\///\\//\/\\/\/\/\/\\/\\///\/\\\\\//\\///////\\/\\\/\//\///\\\\\\/////\\\/\/\//\\/\/\\////\\///\\/\////\\\\///\\\//\\\\/\\\//\//\\//\\/\\/\\\\//\/\/\\\/\\\\\\\\/\\/\//\\\////\/\/\//////\/\\//\\\/\\//\/////\////\//\\\\\/\/\\\\/\///\/\//\/\\\///\///\//\//\/\///\\//\/\\/\/\/\/\\/\\///\/\\\\\//\\///////\\/\\\/\//\///\\\\\\/////\\\/\/\//\\/\/\\////\\///\\/\////\\\\///\\\//\\\\/\\\//\//\\//\\/\\/\\\\//\/\/\\\/\\\\\\\\/\\/\//\\\////\/\/\//////\/\\//\\\/\\//\/////\////\//\\\\\/\/\\\\/\///\/\//\/\\\///\///\//\//\/\///\\//\/\\/\/\/\/\\/\\///\/\\\\\//\\///////\\/\\\/\//\///\\\\\\/////\\\/\/\//\\/\/\\////\\///\\/\////\\\\///\\\//\\\\/\\\//\//\\//\\/\\/\\\\//\/\/\\\/\\\\\\\\/\\/\//\\\////\/\/\//////\/\\//\\\/\\//\/////\////\//\\\\\/\/\\\\/\///\/\//\/\\\///\///\//\//\/\///\\//\/\\/\/\/\/\\/\\///\/\\\\\//\\///////\\/\\\/\//\///\\\\\\/////\\\/\/\//\\/\/\\////\\///\\/\////\\\\///\\\//\\\\/\\\//\//\\//\\/\\/\\\\//\/\/\\\/\\\\\\\\/\\/\//\\\////\/\/\//////\/\\//\\\/\\//\/////\////\//\\\\\/\/\\\\/\///\/\//\/\\\///\///\//\//\/\///\\//\/\\/\/\/\/\\/\\///\/\\\\\//\\///////\\/\\\/\//\///\\\\\\/////\\\/\/\//\\/\/\\////\\///\\/\////\\\\///\\\//\\\\/\\\//\//\\//\\/\\/\\\\//\/\/\\\/\\\\\\\\/\\/\//\\\////\/\/\//////\/\\//\\\/\\//\/////\////\//\\\\\/\/\\\\/\///\/\//\/\\\///\///\//\//\/\///\\//\/\\/\/\/\/\\/\\///\/\\\\\//\\///////\\/\\\/\//\///\\\\\\/////\\\/\/\//\\/\/\\////\\///\\/\////\\\\///\\\//\\\\/\\\//\//\\//\\/\\/\\\\//\/\/\\\/\\\\\\\\/\\/\//\\\////\/\/\//////\/\\//\\\/\\//\/////\////\//\\\\\/\/\\\\/\///\/\//\/\\\///\///\//\//\/\///\\//\/\\/\/\/\/\\/\\///\/\\\\\//\\///////\\/\\\/\//\///\\\\\\/////\\\/\/\//\\/\/\\////\\///\\/\////\\\\///\\\//\\\\/\\\//\//\\//\\/\\/\\\\//\/\/\\\/\\\\\\\\/\\/\//\\\////\/\/\//////\/\\//\\\/\\//\/////\////\//\\\\\/\/\\\\/\///\/\//\/\\\///\///\//\//\/\///\\//\/\\/\/\/\/\\/\\///\/\\\\\//\\///////\\/\\\/\//\///\\\\\\/////\\\/\/\//\\/\/\\////\\///\\/\////\\\\///\\\//\\\\/\\\//\//\\//\\/\\/\\\\//\/\/\\\/\\\\\\\\/\\/\//\\\////\/\/\//////\/\\//\\\/\\//\/////\////\//\\\\\/\/\\\\/\///\/\//\/\\\///\///\//\//\/\///\\//\/\\/\/\/\/\\/\\///\/\\\\\/_______________________________________________


The output of 10 print is a path program, just one that only moves the program counter around, doing no other work.


Right, but as I noted earlier, it's a Path' program where Path' is a modified version of Path that prepends $ to a program automatically before processing it and uses PETSCII 109 and 110 instead of / and \.

Except not really, because the output of 10 print is NOT / and \ but PETSCII characters that look similar to those but which are different.


Ian, Path-prime is a nice term. A succinct recap: 10 print outputs executable Path-prime programs, whose operations are a kind of performance of the maze-like wandering that we see implicit in 10 print. This is one response to the argument that 10 print does not informatically specify a maze-like texture, with a demonstration being that replacing the PETSCII characters with Ps and Qs, causing our perception of it to suddenly change. Path retorts that it threads the labyrinth of Ps and Qs all the same.

What I love about Michael's Path version of 10 print is that it closes the loop -- it isn't a quine, or elegant in the way that a one-liner is elegant, but instead it uses a program with characters that are visual metaphors texture as visual


Mazepic.png
784 × 552 pixels


MS_4514.jpg
300 × 497 pixels


In A remarkable collection of Babylonian mathematical texts, Jöran Friberg argues that MS 4515, an Old Babylonian tablet (16-20 BCE) inscribed with a labyrinth, is algorithmically generated. He gives the algorithm that he believes was used to produce this labyrinth.

Personal tools