1  REM  ****  HP BASIC PROGRAM LIBRARY  ***********************
2  REM
3  REM        TEASER:  BRAIN TEASER PUZZLE
4  REM
5  REM        36764 REV A  --  10/73
6  REM
7  REM  ****  CONTRIBUTED PROGRAM  ****************************
10  DIM A$[5]
20  PRINT " DO YOU WANT INSTRUCTIONS";
30  INPUT A$
40  IF A$="YES" THEN 75
50  IF A$="NO" THEN 280
60  PRINT "PLEASE GIVE ME YES OR NO ANSWER."
70  GOTO 30
75  PRINT 
80  PRINT "IF YOU LIKE BRAIN TEASER, THEN YOU'RE IN FOR SOME FUN!"
90  PRINT "THE OBJECT OF THIS PUZZLE IS TO SOLVE A 3 X 3 MATRIX SUCH THAT"
100  PRINT "1'S APPEAR IN ALL POSITIONS EXCEPT IN THE CENTER WHICH WILL REMAIN"
110  PRINT "0.  THE POSITIONS ON THE MATRIX BOARD ARE REFERRED TO BY ROWS,"
120  PRINT "THEN COLUMNS. FOR EXAMPLE, THE UPPER RIGHT HAND POSITION WOULD"
130  PRINT "BE REFFERED TO: 1,3.  HERE ARE THE RULES AND CONDITIONS:"
140  PRINT 
150  PRINT "YOU ARE NOT ALLOWED TO CHANGE A 0 TO A 1; YOU MUST CHANGE 1'S"
160  PRINT "TO 0'S!"
170  PRINT 
180  PRINT "WHEN A 1 IS MADE 0, ITS IMMEDIATE NEIGHBORS CHANGE STATE, THAT IS,"
190  PRINT "1'S BECOME 0'S AND VICE VERSA.  FOR EXAMPLE, IF YOUR MOVE WAS"
200  PRINT "TO CHANGE 1,1  BOTH 1,2 AND 2,1 WOULD CHANGE STATE.  IN ADDITION,"
210  PRINT "CHANGING CORNER POSITIONS ALSO CHANGES THE CENTER POSITION; CHANGING"
220  PRINT "CENTER POSITION ALSO CHANGES OUTSIDE MIDDLE POSITIONS."
230  PRINT "(1,2);(2,1);(2,3);AND(3,2)."
240  PRINT 
250  PRINT "IF YOU ARE STILL UNSURE, TRY THE GAME A FEW TIMES AND OBSERVE"
260  PRINT "WHAT HAPPENS ON THE BOARD."
270  PRINT "     AFTER EACH MOVE THE NEW BOARD WILL BE PRINTED OUT."
280  PRINT 
290  PRINT "PLEASE GIVE ME A RANDOM NUMBER TO START THE GAME OFF";
300  INPUT X
310  DIM A[3,3]
320  FOR M=1 TO 3
330  FOR N=1 TO 3
340  LET A[M,N]=INT(RND(X)+.5)
350  NEXT N
360  NEXT M
370  FOR Q=1 TO 5
380  PRINT 
390  NEXT Q
400  PRINT 
410  GOTO 980
420  PRINT 
430  MAT  PRINT A;
440  PRINT "MAKE YOUR MOVE";
450  INPUT M,N
460  PRINT 
470  IF M#1 AND M#2 AND M#3 OR N#1 AND N#2 AND N#3 THEN 630
480  IF A[M,N]=0 THEN 600
490  LET A[M,N]=0
500  IF M=1 AND N=1 THEN 650
510  IF M=1 AND N=2 THEN 690
520  IF M=1 AND N=3 THEN 720
530  IF M=2 AND N=1 THEN 760
540  IF M=2 AND N=2 THEN 790
550  IF M=2 AND N=3 THEN 840
560  IF M=3 AND N=1 THEN 870
570  IF M=3 AND N=2 THEN 910
580  IF M=3 AND N=3 THEN 940
590  GOTO 40
600  PRINT "DON'T CHEAT! YOU MUST CHANGE 1'S TO 0'S."
610  PRINT "NOW, GIVE ME ANOTHER POSITION."
620  GOTO 450
630  PRINT "PLEASE GIVE ME PROPER DATA REFERRING TO BOARD."
640  GOTO 450
650  LET A[1,2]= NOT A[1,2]
660  LET A[2,1]= NOT A[2,1]
670  LET A[2,2]= NOT A[2,2]
680  GOTO 410
690  LET A[1,1]= NOT A[1,1]
700  LET A[1,3]= NOT A[1,3]
710  GOTO 410
720  LET A[1,2]= NOT A[1,2]
730  LET A[2,3]= NOT A[2,3]
740  LET A[2,2]= NOT A[2,2]
750  GOTO 410
760  LET A[1,1]= NOT A[1,1]
770  LET A[3,1]= NOT A[3,1]
780  GOTO 410
790  LET A[1,2]= NOT A[1,2]
800  LET A[2,1]= NOT A[2,1]
810  LET A[2,3]= NOT A[2,3]
820  LET A[3,2]= NOT A[3,2]
830  GOTO 410
840  LET A[1,3]= NOT A[1,3]
850  LET A[3,3]= NOT A[3,3]
860  GOTO 410
870  LET A[2,1]= NOT A[2,1]
880  LET A[3,2]= NOT A[3,2]
890  LET A[2,2]= NOT A[2,2]
900  GOTO 410
910  LET A[3,1]= NOT A[3,1]
920  LET A[3,3]= NOT A[3,3]
930  GOTO 410
940  LET A[2,3]= NOT A[2,3]
950  LET A[3,2]= NOT A[3,2]
960  LET A[2,2]= NOT A[2,2]
970  GOTO 410
980  IF A[1,1] AND A[1,2] AND A[1,3] AND A[2,1] THEN 1000
990  GOTO 1060
1000  IF A[2,3] AND A[3,1] AND A[3,2] AND A[3,3] THEN 1020
1010  GOTO 1060
1020  PRINT "*****CONGRATULATIONS - YOU SOLVED THE GREAT PUZZLE*****"
1030  PRINT 
1040  MAT  PRINT A;
1050  STOP 
1060  IF  NOT A[1,1] AND  NOT A[1,2] AND  NOT A[1,3] AND  NOT A[2,1] AND  NOT A[2,2] THEN 1080
1070  GOTO 420
1080  IF  NOT A[2,3] AND  NOT A[3,1] AND  NOT A[3,2] AND  NOT A[3,3] THEN 1100
1090  GOTO 420
1100  PRINT "*****SORRY - NO WAY YOU'LL WIN NOW!!*****"
1110  PRINT 
1120  MAT  PRINT A;
1130  STOP 
1140  END 
