10  REM ****  HP TIME-SHARED BASIC PROGRAM LIBRARY  ********************
20  REM
30  REM             REFLCT:  LEAST TIME PRINCIPLE AND LIGHT
40  REM
50  REM              36319 (A833)  REV A -- 10/71
60  REM
70  REM ****  CONTRIBUTED PROGRAM  *************************************
80  REM COPYRIGHT 1970, POLYTECHNIC INSTITUTE OF BROOKLYN
90  REM REFLCT
100  REM  PROGRAM BY GERARD M. DAMM, WYANDANCH HS,  8/68
110  REM  REVISED BY C.LOSIK  8-16-70 
120  DIM A[7],B[7],C[7]
130  REM  INTRODUCTION
140  PRINT "YOU ARE CAMPING OUT WEST IN COORDINATE NATIONAL PARK ON"
150  PRINT "ORDINATE MOUNTAIN, LOCATED 10 MILES NORTH OF THE"
160  PRINT "DESERTED TOWN OF ORIGIN, WHICH IS CONVENIENTLY LOCATED"
170  PRINT "AT (0,0) ON THE LOCAL MAP."
180  PRINT 
190  PRINT "A CALAMITY STRIKES!  THE NEAREST HELP IS AT THE"
200  PRINT "BAR 30:30 RANCH, LOCATED AT COORDINATES (30,30)."
210  PRINT "TO GET THERE, YOU MUST RIDE AN OLD HORSE"
220  PRINT "(NAMED LIGHTRAY)  WHO :"
230  PRINT " ","A) WILL ONLY WALK 5 MILES PER HOUR"
240  PRINT " ","B) WILL CEASE TO WALK (AND EXIST) AFTER 10 HOURS"
250  PRINT " ","C) MUST HAVE A DRINK OF WATER SOMEWHERE ALONG THE"
260  PRINT " ","ABSCISSA RIVER, WHICH (IF YOU HAVEN'T GUESSED) RUNS"
270  PRINT " ","ALONG THE ABSCISSA IN COORDINATE PARK"
280  PRINT 
290  PRINT "HERE IS YOUR PROBLEM:  YOU MUST PICK A SPOT"
300  PRINT "(FROM 0 TO 30) ALONG THE ABSCISSA RIVER DURING THE"
310  PRINT "TRIP TO GIVE LIGHTRAY A DRINK, AND STILL MAKE IT TO"
320  PRINT "THE BAR 30:30 WITHIN THE TIME ALLOWED.  LIGHTRAY, USING"
330  PRINT "HORSE SENSE, KNOWS ALL THE ANGLES, SO WE WILL GIVE"
340  PRINT "THEM TO YOU, TOO."
350  REM  FIRST RUN, INITIALIZE RANCH 
360  LET A=30
370  LET B=30
380  LET T9=10
390  LET R=180/3.14159
400  GOTO 500
410  REM  SECOND RUN (OPTIONAL) 
420  PRINT 
430  PRINT "ENTER TWO NUMBERS, SEPARATED BY A COMMA, FOR THE NEW"
440  PRINT "RANCH COORDINATES  ";
450  INPUT A,B
460  LET X=10*A/(B+10)
470  LET T9=(SQR(X*X+100)+SQR((A-X)*(A-X)+B*B))/5
480  PRINT "O.K., LIGHTRAY WILL LAST ABOUT"T9+.001"HOURS THIS TIME."
490  REM  LOOP FOR SEVEN TRYS - EXIT LOOP IF CORRECT
500  FOR I=1 TO 7
510  PRINT 
520  PRINT "WHERE WILL LIGHTRAY STOP FOR A DRINK";
530  INPUT X
540  LET A[I]=INT(R*ATN(10/X)+.5)
550  PRINT 
560  LET B[I]=INT(R*ATN(B/(A-X))+.5)
570  PRINT "ANGLE APPROACHING RIVER IS"A[I]"DEGREES."
580  PRINT "ANGLE LEAVING RIVER IS"B[I]"DEGREES."
590  IF A[I]=B[I] THEN 730
600  LET C[I]=ABS(A[I]-B[I])
610  IF I=1 THEN 800
620  IF C[I]>C[I-1] THEN 700
630  IF C[I]<C[I-1] THEN 660
640  PRINT "C'MON -- YOU TRIED THAT LAST TIME."
650  GOTO 800
660  PRINT "WELL, YOU ARE CLOSER THAN LAST TIME."
670  PRINT "KEEP AN EYE ON THOSE ANGLES, THOUGH."
680  PRINT "LET'S GO BACK FOR ANOTHER HORSE."
690  GOTO 800
700  PRINT "HEY - THIS TRIP TAKES LONGER!"
710  PRINT "YOU HAVE A DEAD HORSE ON YOUR HANDS.  TRY AGAIN."
720  GOTO 800
730  PRINT "NICE WORK.  YOU MADE IT."
740  PRINT "THE TRIP TOOK ABOUT"(SQR(X*X+100)+SQR((A-X)*(A-X)+B*B))/5;
750  PRINT " HOURS."
760  PRINT "YOU CAN SEE THAT USING HORSE SENSE, LIGHTRAY KNOWS THAT"
770  PRINT "THE ANGLES HAVE TO BE EQUAL OF REFLECTION FOR A"
780  PRINT "MINIMUM TIME TRIP."
790  GOTO 830
800  NEXT I
810  PRINT 
820  PRINT "TOO MANY GUESSES; WE ARE OUT OF HORSES."
830  PRINT 
840  PRINT "IF YOU WANT TO MOVE THE RANCH, TYPE 1"
850  PRINT "IF YOU WANT TO SEE SOMETHING ELSE, TYPE 2"
860  PRINT "IF YOU WANT TO QUIT, TYPE 3"
870  INPUT X
880  IF X=1 THEN 420
890  IF X=2 THEN 920
900  IF X=3 THEN 940
910  GOTO 870
920  PRINT "TIME FOR AN ACTUAL LIGHTRAY TO COMPLETE THE TRIP IS:"
930  PRINT (SQR(X*X+100)+SQR((A-X)*(A-X)+B*B))/186000.;" SECONDS."
940  PRINT 
950  PRINT " ","THANK YOU FOR PLAYING."
960  END 
