1 RANDOMIZE
5 PRINT TAB(33);"BAGELS"
10 PRINT TAB(15);"CREATIVE COMPUTING  MORRISTOWN, NEW JERSEY"
12 PRINT TAB(10);"ECMA-55 PORT BY. B. WATSON, URCHLAY AT SLACKWARE.UK"
14 PRINT
16 PRINT
20 REM *** BAGELS NUMBER GUESSING GAME
22 REM *** ORIGINAL SOURCE UNKNOWN BUT SUSPECTED TO BE
25 REM *** LAWRENCE HALL OF SCIENCE, U.C. BERKELEY
29 REM A = ACTUAL ANSWER, G = USER'S GUESS
30 DIM A(3),G(3)
40 LET Y=0
50 PRINT
55 PRINT
60 PRINT
70 PRINT "WOULD YOU LIKE THE RULES (1=YES, 0=NO)";
80 INPUT N
90 IF N=0 THEN 150
100 PRINT
105 PRINT "I AM THINKING OF A THREE-DIGIT NUMBER.  TRY TO GUESS"
110 PRINT "MY NUMBER AND I WILL GIVE YOU CLUES AS FOLLOWS:"
120 PRINT "   PICO   - ONE DIGIT CORRECT BUT IN THE WRONG POSITION"
130 PRINT "   FERMI  - ONE DIGIT CORRECT AND IN THE RIGHT POSITION"
140 PRINT "   BAGELS - NO DIGITS CORRECT"
150 FOR I=1 TO 3
160 LET A(I)=INT(10*RND)
165 IF I-1=0 THEN 200
170 FOR J=1 TO I-1
180 IF A(I)=A(J) THEN 160
190 NEXT J
200 NEXT I
210 PRINT
215 PRINT "O.K.  I HAVE A NUMBER IN MIND."
220 FOR I=1 TO 20
230 PRINT "GUESS #";I,
240 INPUT N
243 IF N>=1000 THEN 247
245 IF N<0 THEN 247
246 GOTO 250
247 GOSUB 630
248 GOTO 230
250 LET G(1)=INT(N/100)
260 LET G(2)=INT((N-G(1)*100)/10)
270 LET G(3)=N-(G(1)*100+G(2)*10)
290 REM UNCOMMENT NEXT LINE FOR DEBUGGING
300 REM GOSUB 800
320 LET F=0
322 IF G(1)<>G(2) THEN 330
325 LET F=1
330 IF G(2)<>G(3) THEN 340
335 LET F=1
340 IF G(3)<>G(1) THEN 345
342 LET F=1
345 IF F=0 THEN 350
347 GOSUB 650
349 GOTO 230
350 LET C=0
355 LET D=0
360 FOR J=1 TO 2
370 IF A(J)<>G(J+1) THEN 390
380 LET C=C+1
390 IF A(J+1)<>G(J) THEN 410
400 LET C=C+1
410 NEXT J
420 IF A(1)<>G(3) THEN 440
430 LET C=C+1
440 IF A(3)<>G(1) THEN 460
450 LET C=C+1
460 FOR J=1 TO 3
470 IF A(J)<>G(J) THEN 490
480 LET D=D+1
490 NEXT J
500 IF D=3 THEN 680
505 IF C=0 THEN 545
520 FOR J=1 TO C
530 PRINT "PICO ";
540 NEXT J
545 IF D=0 THEN 580
550 FOR J=1 TO D
560 PRINT "FERMI ";
570 NEXT J
580 IF C+D<>0 THEN 600
590 PRINT "BAGELS";
600 PRINT
605 NEXT I
610 PRINT "OH WELL."
612 PRINT "THAT'S TWENTY GUESSES.  MY NUMBER WAS";100*A(1)+10*A(2)+A(3)
614 LET N=100*A(1)+10*A(2)+A(3)
615 IF N>=100 THEN 620
617 PRINT "0";
618 IF N>=10 THEN 620
619 PRINT "0";
620 PRINT N
622 GOTO 700
630 PRINT "TRY GUESSING A THREE-DIGIT NUMBER."
635 RETURN
650 PRINT "OH, I FORGOT TO TELL YOU THAT THE NUMBER I HAVE IN MIND"
660 PRINT "HAS NO TWO DIGITS THE SAME."
670 RETURN
680 PRINT "YOU GOT IT!!!"
685 PRINT
690 LET Y=Y+1
700 PRINT "PLAY AGAIN (1=YES, 0=NO)";
710 INPUT N
720 IF N<>0 THEN 150
730 IF Y=0 THEN 750
740 PRINT
745 PRINT "A";Y;"POINT BAGELS BUFF!!"
750 PRINT "HOPE YOU HAD FUN.  BYE."
760 GOTO 999
799 REM CHEAT/DEBUG MODE. UNCOMMENT LINE 300 TO ACTIVATE THIS CODE
800 PRINT "GUESS","ANSWER"
805 FOR X=1 TO 3
810 PRINT G(X),A(X)
820 NEXT X
830 RETURN
999 END
