1 REM **** HP BASIC PROGRAM LIBRARY ******************************** 2 REM 3 REM QUADGT: FOUR-DIGIT NUMBER GUESSING GAME 4 REM 5 REM 36768 REV A -- 10/73 6 REM 7 REM **** CONTRIBUTED PROGRAM *********************************** 10 DIM A$[5],D$[10] 20 D$="0123456789" 30 DEF FNA(X)=INT(10*RND(1)) 40 PRINT "DO YOU WANT TO SEE THE INSTRUCTIONS"; 50 INPUT A$ 60 IF A$[1,1]="Y" THEN 100 70 IF A$[1,1]="N" THEN 280 80 PRINT "I SAID, "; 90 GOTO 40 100 PRINT "THIS GAME IS PLAYED AS FOLLOWS:" 110 PRINT 120 PRINT "I WILL CHOOSE A 4 DIGIT NUMBER. NO TWO DIGITS WILL BE THE SAME." 130 PRINT "YOUR JOB WILL BE TO FIGURE OUT WHAT DIGITS I PICKED." 140 PRINT 150 PRINT "MAKE YOUR GUESS BY ENTERING A 4 DIGIT NUMBER. I WILL" 160 PRINT "RESPOND WITH A 2 DIGIT NUMBER. MY RESPONSE INDICATES TWO" 170 PRINT "THINGS. FIRST, I TELL YOU HOW MANY DIGITS YOU GUESSED ARE" 180 PRINT "IN THE NUMBER I CHOSE. SECOND, I TELL YOU HOW MANY DIGITS" 190 PRINT "ARE PLACED IN THE CORRECT POSITION WITHIN THE CHOSEN" 200 PRINT "NUMBER." 210 PRINT 220 PRINT "FOR EXAMPLE, IF YOU GUESS 1463 AND I RESPOND WITH" 230 PRINT "31 THEN YOU GOT 3 OF THE DIGITS WHICH APPEAR IN THE" 240 PRINT "ANSWER BUT ONLY ONE DIGIT IS IN THE CORRECT POSITION." 250 PRINT "THUS, THE NUMBER I CHOSE COULD POSSIBLY BE 0364." 260 PRINT 270 PRINT "THE EXPERIENCED PLAYER WILL AVERAGE 5 OR 6 GUESSES PER GAME." 280 PRINT "ENTER YOUR FIRST 4 DIGIT GUESS." 290 A[1]=FNA(1) 300 FOR I=2 TO 4 310 A[I]=FNA(1) 320 FOR J=1 TO I-1 330 IF A[I]=A[J] THEN 310 340 NEXT J 350 NEXT I 360 L=0 370 ENTER 255,I,A$ 380 IF I#-256 THEN 410 390 PRINT LIN(1),"THINK A LITTLE FASTER, PLEASE." 400 GOTO 370 410 IF LEN(A$)=4 THEN 440 420 PRINT LIN(1),"ENTER EXACTLY 4 DIGITS" 430 GOTO 370 440 FOR I=1 TO 4 450 FOR J=0 TO 9 460 IF A$[I,I]#D$[J+1,J+1] THEN 490 470 N[I]=J 480 GOTO 530 490 NEXT J 500 PRINT USING 510;LIN(1),A$[I,I] 510 IMAGEA,X,"IS AN ILLEGAL CHARACTER. TRY AGAIN" 520 GOTO 370 530 NEXT I 540 FOR I=1 TO 3 550 FOR J=I+1 TO 4 560 IF A$[I,I]#A$[J,J] THEN 600 570 PRINT USING 580;LIN(1),A$[I,I] 580 IMAGEA,X,"APPEARS MORE THAN ONCE. TRY AGAIN" 590 GOTO 370 600 NEXT J 610 NEXT I 620 M1=M2=0 630 FOR I=1 TO 4 640 FOR J=1 TO 4 650 IF N[I]#A[J] THEN 700 660 M1=M1+1 670 IF I#J THEN 710 680 M2=M2+1 690 GOTO 710 700 NEXT J 710 NEXT I 720 PRINT USING "D,D";SPA(5),M1,M2 730 L=L+1 740 IF M2#4 THEN 800 750 PRINT USING 760;L 760 IMAGE #, "YOU GOT IT IN ", 2D, " GUESSES. PLAY ANOTHER GAME" 770 INPUT A$ 780 IF A$[1,1]="Y" THEN 280 790 STOP 800 IF L=19 THEN 1000 810 IF L#12 AND L#15 AND L#18 THEN 370 820 ENTER 3,I,A$ 830 IF I#-256 THEN 410 840 PRINT 850 IF L=15 THEN 910 860 IF L=18 THEN 950 870 PRINT '7"YOU"'7" ARE"'7" OBVIOUSLY "'7"A BEGINNER. HERE'S A HINT." 880 PRINT USING 890;A[1] 890 IMAGE"THE FIRST DIGIT IS A ",D 900 GOTO 370 910 PRINT "I'M "'7"BEGINNING "'7"TO LOSE "'7"MY PATIENCE." 920 PRINT USING 930;A[1],A[2] 930 IMAGE"THE FIRST TWO DIGITS ARE ",D,D/"IF YOU CAN'T GET IT NOW, GIVE IT UP." 940 GOTO 370 950 PRINT "HERE'S "'7"AN IDEA. "'7" I'LL PRINT "'7"IT OUT." 960 PRINT '7"SEE IF "'7"YOU CAN TYPE "'7"IT BACK IN:"'7" "; 970 PRINT USING 980;A[1],A[2],A[3],A[4] 980 IMAGE D,D,D,D 990 GOTO 370 1000 PRINT "I QUIT. GO PLAY SOME OTHER GAME. BETTER YET, LOG OFF." 1010 STOP 1020 END