10 REM * * * MASTERMIND CODE BREAKER * * * - CODBRE.BA 20 PRINT\PRINT "MASTERMIND CODEBREAKER"\PRINT 30 RANDOMIZE 40 DIM R0$(9,15),R1$(9,15),R2$(9,15),R3$(9,15),S(9,1) 50 DIM A$(6),B$(3),C$(3),D$(3) 60 FOR J=0 TO 6 70 READ A$(J) 80 NEXT J 90 DATA "RED","BLUE","GREEN","YELLOW","ORANGE","BROWN","SPACE" 100 L0=0 110 L1=0 120 L2=0 130 L3=0 140 PRINT "PLEASE BE PATINT. SOMETIMES I TAKE A FEW MINUTES ON MY MOVE." 150 PRINT "WHICH VERSION [1 OR 2]"; 160 INPUT V 170 V=V+5 180 REM ASSIGN COLORS AT RANDOM FOR ROW 1 190 R0$(0)=A$(INT(V*RND(1))) 191 R1$(0)=A$(INT(V*RND(1))) 192 R2$(0)=A$(INT(V*RND(1))) 193 R3$(0)=A$(INT(V*RND(1))) 220 REM START MAIN PLAY OF GAME HERE 230 REM I IS THE ROW COUNTER 240 FOR I=0 TO 9 250 PRINT "MY MOVE NO.";I+1;"IS:";TAB(30); 251 PRINT R0$(I);TAB(40);R1$(I);TAB(50);R2$(I);TAB(60);R3$(I) 270 PRINT "HOW MANY BLACK PEGS"; 280 INPUT S(I,0) 290 IF S(I,0)<>4 GOTO 320 300 PRINT "THANKS FOR THE GAME" 305 PRINT 310 GOTO 870 320 IF S(I,0)<>3 GOTO 360 330 S(I,1)=0\REM IF 3 BLACKS, THEN 0 WHITES 340 GOTO 380 360 PRINT "HOW MANY WHITE PEGS"; 370 INPUT S(I,1) 380 REM GENERATE HYPOTHESIS 390 FOR I0=L0 TO V-1 395 D$(0)=A$(I0)\REM **WAS 430** 400 FOR I1=L1 TO V-1 405 D$(1)=A$(I1)\REM **WAS 440** 410 FOR I2=L2 TO V-1 415 D$(2)=A$(I2)\REM **WAS 540** 420 FOR I3=L3 TO V-1 460 D$(3)=A$(I3) 470 REM CHECK ALL ROWS FROM FIRST TO CURRENT FOR CONSISTANCY 490 FOR R=0 TO I 510 C$(0)=R0$(R) 511 C$(1)=R1$(R) 512 C$(2)=R2$(R) 513 C$(3)=R3$(R) 515 FOR J=0 TO 3\REM **WAS 500** 520 B$(J)=D$(J) 530 NEXT J 540 REM USE ROW EVALUATION SUBROUTINE TO CHECK CONSISTENCY OF 550 REM HYPOTHESIS AGAINST EACH ROW 555 N=0\M=0 560 GOSUB 910 570 REM CHECK FOR AGREEMENT OF BLACK AND WHITE COUNT 580 IF N<>S(R,0) GOTO 700 590 IF M<>S(R,1) GOTO 700 600 NEXT R 610 REM MAKE SURE THAT HYPOTHESIS ROW DOESNT DUPLICAT ROW 1 620 Z=0 640 IF R0$(0)<>D$(0) GOTO 642 641 Z=Z+1 642 IF R1$(0)<>D$(1) GOTO 644 643 Z=Z+1 644 IF R2$(0)<>D$(2) GOTO 646 645 Z=Z+1 646 IF R3$(0)<>D$(3) GOTO 670 647 Z=Z+1 670 IF Z=4 GOTO 700 690 GOTO 820 700 NEXT I3 710 NEXT I2 720 NEXT I1 730 NEXT I0 740 PRINT "I HAVE REACHED AN IMPASSE IN MY THINKING" 750 PRINT "COULD YOU HAVE MADE AN ERROR?" 760 GOTO 870 770 L0=I0 780 L1=I1 790 L2=I2 800 L3=I3+1 810 REM DO NOT RECHECK ELLIMINATED POSSIBILITIES 820 REM ASSIGN NEXT ROW 830 R0$(I+1)=D$(0) 831 R1$(I+1)=D$(1) 832 R2$(I+1)=D$(2) 833 R3$(I+1)=D$(3) 850 NEXT I 860 PRINT "I AM STUMPED -- YOU WIN" 870 PRINT "ANOTHER GAME [Y OR N]"; 880 INPUT X$ 890 IF X$="Y" GOTO 150\IF X$<>"N" GOTO 870 900 STOP 910 REM SUBROUTINE TO EVALUATE RESPONSE 920 REM COUNT BLACKS FIRST 930 FOR J1=0 TO 3 940 IF C$(J1)<>B$(J1) GOTO 960 950 N=N+1 960 NEXT J1 970 REM NOW COUNT WHITES 980 FOR J1=0 TO 3 990 FOR J2=0 TO 3 1000 IF J1=J2 GOTO 1080 1010 IF C$(J1)=B$(J1) GOTO 1080 1020 IF C$(J2)=B$(J2) GOTO 1080 1030 IF C$(J1)<>B$(J2) GOTO 1080 1040 M=M+1 1050 B$(J2)="X"\REM DUMMY WRONG VALUE 1070 GOTO 1090 1080 NEXT J2 1090 NEXT J1 1100 RETURN 1110 STOP 2000 END