10 REM************************************************************ 20 REM** COPYRIGHT 1971 BY THE REGENTS OF THE UNIV. OF CALIF. ** 30 REM** PRODUCED AT THE LAWRENCE HALL OF SCIENCE, BERKELEY ** 40 REM** [MODIFIED AND DOCUMENTED BY THE AARDVARK AT THE PCC] ** 50 REM************************************************************ 60 REM 70 DIM A$[21],B$[36],C$[72],A[12] 80 REM** A IS AN ARRAY CONTAINING THE NUMBER OF DAYS IN EACH MONTH 90 MAT READ A 100 REM** FNY IS THE NUMBER OF DAYS IN FEBRUARY OF THE YEAR Y 110 DEF FNY(Y)=29-SGN(Y/4-INT(Y/4)) 120 REM** FNS IS THE SINEWAVE FUNCTION 130 DEF FNS(S)=INT(14*SIN((S/P-INT(S/P))*6.28318)+30.5) 140 REM** FNM IS THE REMAINDER OF X AND 7 150 DEF FNM(X)=INT(7*(X/7-INT(X/7))+.5) 160 A$="MONTUEWEDTHUFRISATSUN" 170 B$="JANFEBMARAPRMAYJUNJULAUGSEPOCTNOVDEC" 180 PRINT " DO YOU KNOW WHAT A BIORHYTHM IS [Y-N]"; 190 INPUT C$ 200 IF C$[1,1]="Y" THEN 500 210 PRINT " THE BIORYTHEM THEORY POSTULATES THAT THERE ARE CERTAIN" 220 PRINT "METABOLIC RHYTHMS THAT HAVE A CONSTANT CYCLE TIME IN THE HUMAN" 230 PRINT "BODY, AND ARE KNOWN AS INNER CLOCKS." 240 PRINT " TWO PHYSICIANS, ONE A CONTEMPORARY OF FREUD, CONCURRENTLY" 250 PRINT "DESCRIBED A 23-DAY CYCLE THAT CORRELATED WITH PHYSICAL " 260 PRINT "VITALITY, ENDURANCE, AND ENERGY; AND A 28-DAY CYCLE THAT" 270 PRINT "CORRESPONDS TO SENSITIVITY, INTUITION, AND CHEERFULNESS. A" 280 PRINT "THIRD CYCLE WAS OBSERVED BY A PROFESSER AND OTHERS IN THE" 290 PRINT "1920'S AND 1930'S, AND IS A 33-DAY COGNITIVE OR INTELLECTUAL" 300 PRINT "CYCLE THAT RELATES TO MENTAL ALERTNESS AND JUDGEMENT." 310 PRINT " ALL THREE CYCLES START UP FROM BIRTH OR THE BEGINNING OF" 320 PRINT "INDEPENDENT LIFE." 330 PRINT " THE DAYS ON WHICH THE MEDIAN (0) LINE IS CROSSED ARE " 340 PRINT "CALLED CRITICAL DAYS, ESPECIALLY FOR THE PHYSICAL AND SEN-" 350 PRINT "SITIVITY CYCLES AND ARE WHEN ACCIDENTS ARE THE MOST LIKELY" 360 PRINT "TO OCCUR. THE HIGH (+) PERIODS IN THE VARIOUS CYCLES ARE THE" 370 PRINT "TIMES WHEN YOU SHOULD HAVE THE MOST ENERGY, BE MOST CHEERFUL," 380 PRINT "OUTGOING AND MENTALLY ALERT. THE LOW (-) TIMES ARE REGARDED" 390 PRINT "AS RECUPERITIVE PERIODS." 400 PRINT " ALTHOUGH ALL CYCLES ARE SAID TO START FROM ZERO AT THE" 410 PRINT "TIME OF BIRTH, BIORHYTHM HAS NOTHING TO DO WITH ASTROLOGY." 420 PRINT " A TOKYO TAXI COMPANY HAS REPORTED A 60% CUT IN ACCIDENTS" 430 PRINT "BY GIVING DRIVERS AN 'EXTRA-CAREFUL-TODAY'REMINDER ON " 440 PRINT "CRITICAL DAYS" 450 PRINT '10"GRAPH SYMBOLS:"'13'10'10" I : MEDIAN LINE (0 LINE)" 460 PRINT " P : PHYSICAL CYCLE (23-DAY)" 470 PRINT " S : SENSITIVITY CYCLE (28-DAY)" 480 PRINT " C : COGNITIVE CYCLE (33-DAY)" 490 PRINT '10'10 500 K=1 510 PRINT " BIRTHDAY [MM,DD,YYYY]"; 520 INPUT M,D,Y 530 REM** THE BELOW REDUCES A NUMBER TO ONLY ITS 10'S AND 1'S DIGITS 540 Y=INT(100.1*(Y/100-INT(Y/100))) 550 REM** CHECK FOR ERRORS 560 A[2]=FNY(Y) 570 IF M<1 OR M>12 OR ABS(M)#INT(M) THEN 1550 580 IF D<1 OR D>A[M] OR INT(D) <> ABS(D) THEN 1570 590 REM** NOW CONVERT D TO JULIAN 600 FOR I=1 TO M-1 610 D=D+A[I] 620 NEXT I 630 K=2 640 PRINT " PLOT STARTING DATE [MM,DD,YYYY]"; 650 INPUT M1,D1,Y1 660 D0=D1 670 REM** THE BELOW DOES THE SAME AS THE ABOVE FOR PLOT DATE 680 Y1=INT(100.1*(Y1/100-INT(Y1/100))) 690 A[2]=FNY(Y1) 700 IF M1<1 OR M1>12 OR ABS(M1)#INT(M1) THEN 1550 710 IF D1<1 OR D1>A[M] OR INT(D1)#ABS(D1) THEN 1570 720 FOR I=1 TO M1-1 730 D1=D1+A[I] 740 NEXT I 750 REM** 'S' WILL END UP BEING HOW MANY DAYS FROM BIRTH TO PLOT DATE 760 S=0 770 REM** FIRST, ADD IN LEAP YEARS FROM BIRTH TO PLOT DATE 780 FOR I=Y+1 TO Y1-1 790 S=S+(I/4=INT(I/4)) 800 NEXT I 810 REM** NOW CHECK FOR BIRTH YEAR BEING LEAP 820 S=S+(Y/4=INT(Y/4) AND D>58) 830 REM** WE ADD HOW MANY YEARS OLD YOU ARE * 365 840 S=S+(Y1-Y-1+(D1 >= D))*365 850 REM** AND FINALLY, WE ADD HOW MANY DAYS SINCE THE LAST BIRTHDAY 860 S=S+(D1 >= D)*(D1-D) 870 S=S+(D1 INT(D1) THEN 1130 1040 REM************* SET UP DATE******* 1050 E=FNM(D3-1)+1 1060 REM** YOU WILL NOTE THAT 1/1/1900 WAS A MONDAY 1070 PRINT A$[3*E-2,3*E]; 1080 PRINT D1; 1090 IF D1 <> 1 THEN 1130 1100 PRINT B$[3*M1-2,3*M1]; 1110 PRINT Y1; 1120 REM*********** SET UP PRINTING**** 1130 FOR X=LEN(C$)+1 TO 72 1140 C$[X,X]=" " 1150 NEXT X 1160 FOR X=1 TO 3 1170 P=5*X+18 1180 X[X]=FNS(S) 1190 NEXT X 1200 C$[30,30]="I" 1210 C$[X[1],X[1]]="P" 1220 IF X[1]#X[2] OR X[1]#X[3] OR X[2]#X[3] THEN 1250 1230 C$[X[1],X[1]]="*" 1240 GOTO 1350 1250 IF X[1]#X[2] THEN 1280 1260 C$[X[3],X[3]]="C" 1270 GOTO 1290 1280 IF X[2]#X[3] THEN 1310 1290 C$[X[2],X[2]]="*" 1300 GOTO 1350 1310 C$[X[2],X[2]]="S" 1320 IF X[1]=X[3] THEN 1230 1330 C$[X[3],X[3]]="C" 1340 REM** OUTPUT C$ 1350 FOR X=15 TO 72 1360 IF C$[X,X]=" " THEN 1380 1370 PRINT TAB(X-1);C$[X,X]; 1380 NEXT X 1390 PRINT 1400 REM** RESET DATE 1410 D3=D3+.5 1420 S=S+.5 1430 D1=D1+.5 1440 IF D1