_runtimePath_ "../runtime" _runtimeStart_ &h7FFF _codeRomType_ ROMv2 mode 2 cls I9 = 0 8 PRINT "ENTER YOUR PATTERN:" 9 X1=0: Y1=0: X2=15: Y2=25 10 DIM A(15,25) 15 dim B$(24) 20 C=0 30 INPUT I$ : PRINT 35 B$(C) = I$ 40 IF UPPER$(I$) = "DONE" THEN B$(C) = "": GOTO 80 50 IF LEFT$(B$(C), 1) = "." THEN B$(C) = RIGHT$(B$(C), LEN(B$(C))-1) 60 C=C+1 70 GOTO 30 80 C=C-1: L=0 90 FOR X=0 TO C-1 100 IF LEN(B$(X)) > L THEN L=LEN(B$(X)) 110 NEXT X 120 X1=13-C/2 130 Y1=8-L/2 140 FOR X=0 TO C 150 FOR Y=0 TO LEN(B$(X)) 160 IF MID$(B$(X), Y, 1) = " " THEN A(X1+X,Y1+Y)=1:P=P+1 170 NEXT Y 180 NEXT X 200 at 0, 0 : PRINT "GENERATION:";G,"POPULATION:";P;: IF I9 THEN PRINT "INVALID!"; 215 X3=25:Y3=15:X4=0: Y4=0: P=0 220 G=G+1 225 FOR X=1 TO X1-1: PRINT: NEXT X 230 FOR X=X1 TO X2 240 PRINT 250 FOR Y=Y1 TO Y2 253 IF A(X,Y)=2 THEN A(X,Y)=0:GOTO 270 256 IF A(X,Y)=3 THEN A(X,Y)=1:GOTO 261 260 IF A(X,Y)<>1 THEN GOTO 270 261 at Y : PRINT ;"*"; 262 IF XX4 THEN X4=X 266 IF YY4 THEN Y4=Y 270 NEXT Y 290 NEXT X 295 FOR X=X2 TO 25: PRINT: NEXT X 299 X1=X3: X2=X4: Y1=Y3: Y2=Y4 301 IF X1<3 THEN X1=3:I9=-1 303 IF X2>22 THEN X2=22:I9=-1 305 IF Y1<3 THEN Y1=3:I9=-1 307 IF Y2>12 THEN Y2=12:I9=-1 309 P=0 500 FOR X=X1-1 TO X2+1 510 FOR Y=Y1-1 TO Y2+1 520 C=0 530 FOR I=X-1 TO X+1 540 FOR J=Y-1 TO Y+1 550 IF (A(I,J)=1) OR (A(I,J)=2) THEN C=C+1 560 NEXT J 570 NEXT I 580 IF A(X,Y)=0 THEN 610 590 IF (C<3) OR (C>4) THEN A(X,Y)=2: GOTO 600 595 P=P+1 600 GOTO 620 610 IF C=3 THEN A(X,Y)=3:P=P+1 620 NEXT Y 630 NEXT X 635 X1=X1-1:Y1=Y1-1:X2=X2+1:Y2=Y2+1 640 GOTO 200 650 END