38 lines
703 B
Text
38 lines
703 B
Text
CHAR FUNC CalcCell(CHAR prev,curr,next)
|
|
IF prev='. AND curr='# AND next='# THEN
|
|
RETURN ('#)
|
|
ELSEIF prev='# AND curr='. AND next='# THEN
|
|
RETURN ('#)
|
|
ELSEIF prev='# AND curr='# AND next='. THEN
|
|
RETURN ('#)
|
|
FI
|
|
RETURN ('.)
|
|
|
|
PROC NextGeneration(CHAR ARRAY s)
|
|
BYTE i
|
|
CHAR prev,curr,next
|
|
|
|
IF s(0)<4 THEN RETURN FI
|
|
prev=s(1) curr=s(2) next=s(3)
|
|
i=2
|
|
DO
|
|
s(i)=CalcCell(prev,curr,next)
|
|
i==+1
|
|
IF i=s(0) THEN EXIT FI
|
|
prev=curr curr=next next=s(i+1)
|
|
OD
|
|
RETURN
|
|
|
|
PROC Main()
|
|
DEFINE MAXGEN="9"
|
|
CHAR ARRAY s=".###.##.#.#.#.#..#.."
|
|
BYTE i
|
|
|
|
FOR i=0 TO MAXGEN
|
|
DO
|
|
PrintF("Generation %I: %S%E",i,s)
|
|
IF i<MAXGEN THEN
|
|
NextGeneration(s)
|
|
FI
|
|
OD
|
|
RETURN
|