90 lines
1.4 KiB
Plaintext
90 lines
1.4 KiB
Plaintext
(
|
|
rule110 celular automata - https://mathworld.wolfram.com/Rule110.html
|
|
proof of turing complentess of the language
|
|
)
|
|
|
|
: over swap dup rot rot ;
|
|
: rem over over / * - ;
|
|
: mod dup rot swap rem swap dup rot + swap rem ;
|
|
|
|
: generation
|
|
0
|
|
begin
|
|
dup 64 <
|
|
while
|
|
dup 8 * mem + 64 8 * +
|
|
swap
|
|
dup
|
|
dup 1+ 64 mod 8 * mem + @
|
|
over 8 * mem + @
|
|
rot 1- 64 mod 8 * mem + @
|
|
|
|
0 = if
|
|
0 = if
|
|
0 = if
|
|
( 0 0 0 )
|
|
32 display
|
|
swap dup 0 !
|
|
else
|
|
( 0 0 1 )
|
|
35 display
|
|
swap dup 1 !
|
|
fi
|
|
else
|
|
0 = if
|
|
( 0 1 0 )
|
|
35 display
|
|
swap dup 1 !
|
|
else
|
|
( 0 1 1 )
|
|
35 display
|
|
swap dup 1 !
|
|
fi
|
|
fi
|
|
else
|
|
0 = if
|
|
0 = if
|
|
( 1 0 0 )
|
|
32 display
|
|
swap dup 0 !
|
|
else
|
|
( 1 0 1 )
|
|
35 display
|
|
swap dup 1 !
|
|
fi
|
|
else
|
|
0 = if
|
|
( 1 1 0 )
|
|
35 display
|
|
swap dup 1 !
|
|
else
|
|
( 1 1 1 )
|
|
32 display
|
|
swap dup 0 !
|
|
fi
|
|
fi
|
|
fi
|
|
drop
|
|
1+
|
|
repeat
|
|
10 display
|
|
drop
|
|
0
|
|
begin
|
|
dup 64 <
|
|
while
|
|
dup 8 * dup mem 64 8 * + + @ mem rot + swap !
|
|
1+
|
|
repeat
|
|
drop
|
|
;
|
|
|
|
mem 32 8 * + 1 !
|
|
0
|
|
begin
|
|
dup 32 <
|
|
while
|
|
generation
|
|
1+
|
|
repeat
|