元胞自动机程序(生命永不停止) USE MSFLIB PARAMETER IR=400,JR=400,NMAX=10000
NMAX-随机产生的生命种子 INTEGER IS(0:1001,0:1001),IS1(0:1001,0:1001),ISN(1:8), TMAX, NUM
IS-基体的二维数组 w rite (*,*) 'PLEASE INPUT LOOP(TMAX)' READ (*,*) TMAX ISEED=RTC() IS=15
"死"的状态,基体为白色
赋予生命的种子,"活"的状态 1 DO I=1, NMAX IX0=IR*RAN(ISEED)+1 JY0=JR*RAN(ISEED)+1 IS(IX0,JY0)=1 END DO IS1=IS
EXECUTE THE RULE DO T=1,TMAX
边界条件 IS(0,0:JR+1)=IS(R, 0:JR+1) IS(IMAX+1, 0:JR+1)=IS(1, 0:JR+1) IS(0:IR+1,0)=IS(0:IR+1,JMAX) IS(0:IR+1,JR+1)=IS(0:IR+1,1)
搜索生命存在的位置 DO IX=1,IR DO JY=1,JR
判断邻居状态 ISN=(/IS(IX-1,JY-1),IS(IX-1,JY),IS(IX-1,JY+1),IS(IX,JY-1) & ,IS(IX,JY+1),IS(IX+1,JY-1),IS(IX+1,JY),IS(IX+1,JY+1)/) NUM=COUNT(ISN
赋予生存的条件 IF((IS(IX,JY)==15
NUM==3)
(IS(IX,JY)==1
(NUM==3
NUM==2))) THEN IS1(IX,JY)=1 ELSE IS1(IX,JY)