\ Taken from http://en.literateprograms.org/Sierpinski_triangle_(Forth)
\ Converted to 4tH by J.L. Bezemer, 2007
80 constant size
size 1 [+] constant /size
/size string state
create symbol bl , char * ,
\ the input has three bits:
\ b0, b1, b2 = next neighbor, current cell, previous neighbor
\ 000 001 010 011 100 101 110 111
create transition 0 , 1 , 1 , 1 , 1 , 1 , 1 , 0 ,
: init-state
state /size erase
1 state size 2/ + c! ;
: .state
cr size 0 do
state i + c@ symbol + @c emit
loop ;
: gen
state c@ ( neighborhood )
size 0 do
2* state i + 1+ c@ or 7 and
dup transition + @c state i + c!
loop drop ;
: sierpinski ( n -- )
init-state .state
1 ?do gen .state loop ;
32 sierpinski
|