“生命”游戏 湖北 郑文衡 1994-04-01 (1)对于处在‘生'的状态的格,若其八个邻格中有2或3个‘生',则继续存活,否则将因过于弧独或过于拥挤而死之。 (2)对于处在‘死'状态的空格,若其八个邻格中有3个‘生',则该格转变为‘生'(代表繁殖过程),否则继续空着。 利用这些规则来运行,棋盘上可以有绝灭、稳定、捺荡、爬行等各种有趣的现象发生。康维问:能否出现自我复制过程?若棋盘无限大,这种过程能否无限持续下去?……康维的生命游戏引起了广泛的兴趣,其后此游戏被玩得花样不断翻新,至今势头不衰。生命游戏开了八十年代元胞自动机(Cellular automata)研究热潮的先声。 为此谨作如下介绍。并编出一个程序,该程序展示了一个可断产生“爬虫”的二维构形。同时演示产生爬虫的过程。该程序在AST386上通过,软件环境是TB。可用BASIC语言顺利移植到普通的IBM-PC系列机,只是运行速度会慢许多。 5 rem glicer version 1.0 10 color 7,1 15 aim a(78,22),b(78,22) 20 a(2,6)=1:a(3,6)=1:a(2,7)=1:a(3,7)=1 25 for i=6 to 8:a(12,i)=1:a(16,i)=1:a(17,i)=1:next i 30 a(14,4)=1:a(14,10)=1:a(13,9)=1:a(13,5)=1:a(15,5)=1:a(15,9)=1 35 for i=22 to 25:for j=3 to 7:a(i,j)=1:next j,i 40 a(22,3)=1:a(22,7)=0:a(23,5)=0:a(24,5)=0 45 a(26,2)=1:a(26,3)=1:a(26,7)=1;a(26,8)=1 50 a(35,4)=1:a(35,5)=1:a(36,4)=1:a(36,5)=1 70 gosub 1000 75 for c=0 to 160 80 for i=0 to 78 90 for j=0 to 22 100 f=0 110 for m=-1 to 1 step 1 120 for n=-1 to 1 step 1 130 k=i+m 135 k=k-(k<0)*79+(k>78)*79 140 l=j+n145 l=l-(l<0)*23+(L>22)23 150 f=f+a(k,1) 160 next n 165 next m 170 f=f-a(i,j) 180 if((a(i,j)=1 and f>3) or (a(i,j)=1 and f<2)) then b(i,j)=0 190 if((a(i,j)=0 and f=3) or (a(imj)=1 and (f=2 or f=3))) then b(i,j)=1200 next j 201 next i 210 for i=0 to 78 211 for j=0 to 22 212 a(i,j)=b(i,j) 213 b(i,j)=0 218 next j 219 next i 220 gosub 1000 230 next c 240 stop 250 end 1000 cls 1010 for j=0 to 21 1020 for i=0 to 78 1030 if a(i,j)=1 then print"*";else print"."; 1040 next i 1050 print 1060 next j 1080 return 1090 end