100  REM LNAUTO BY WTN 9/06
110  PRINT "LINE AUTOMATA GENERATOR"
120  DIM T[74],G[74],R[10],R$[10],D$[72],C$[4]
130  REM C$ DEFINES CHARS DISPLAYED
140  C$=" -*#"
150  PRINT "             XXXXXXXXXX"
160  PRINT "RULE STRING ";
170  INPUT R$
180  IF LEN(R$)=10 THEN 270
190  IF R$ <> "0" THEN 210
200  STOP
210  PRINT "RULE MUST BE 10 DIGITS OF 0-3. EXAMPLES..."
220  PRINT "  0020123010 0012301200 0130010200 0012301100 0012130100"
230  PRINT "  0302120100 0003201300 0113123000 0003132000 1002132000"
240  PRINT "  0020331100 0003212000 0011232000 3311200320"
250  GOTO 150
260  GOTO 150
270  REM CONVERT R$ TO ARRAY R
280  FOR I=1 TO 10
290  R[I]=0
300  IF R$[I,I] <> "1" THEN 320
310  R[I]=1
320  IF R$[I,I] <> "2" THEN 340
330  R[I]=2
340  IF R$[I,I] <> "3" THEN 360
350  R[I]=3
360  NEXT I
370  REM GUARD CELLS
380  T[1]=T[74]=G[1]=G[74]=0
390  REM RANDOM START
400  FOR I=2 TO 73
410  T[I]=INT(RND(1)*4)
420  NEXT I
430  REM OUTER LOOP
440  PRINT "HOW MANY LINES ";
450  INPUT N
460  IF N<1 THEN 150
470  L=0
480  REM LINE LOOP
490  REM GENERATE NEW LINE
500  FOR I=2 TO 73
510  S=0
520  FOR J=I-1 TO I+1
530  S=S+T[J]
540  NEXT J
550  G[I]=R[S+1]
560  NEXT I
570  REM COPY RESULTS TO THIS GEN
580  MAT T=G
590  REM DISPLAY THE LINE
600  FOR I=2 TO 73
610  P=I-1
620  Q=T[I]+1
630  D$[P,P]=C$[Q,Q]
640  NEXT I
650  PRINT D$
660  REM LOOP UNTIL ENOUGH LINES
670  L=L+1
680  IF L<N THEN 480
690  GOTO 430
700  END
