Files
zorth/examples/rule110.zorth
2025-09-09 18:58:26 +01:00

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