73 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			73 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
_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 X<X3 THEN X3=X
 | 
						|
264 IF X>X4 THEN X4=X
 | 
						|
266 IF Y<Y3 THEN Y3=Y
 | 
						|
268 IF Y>Y4 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
 |