10 DIM S(36),R(36),N(36) 20 N1=36:N2=14:N3=112 30 RESTORE 2030 40 FOR X=1 TO N1 50 READ S(X),L:R(X)=S(X):N(X)=S(X)+L-1 60 NEXT X 70 CLS:PRINT "HI! I'M ELIZA. I AM YOUR PERSONAL THERAPY COMPUTER. PLEASE TELL ME YOUR PROBLEM. (PLEASE TYPE IN CAPITAL LETTERS)" 80 REM 90 REM -----USER INPUT SECTION------ 100 REM 110 INPUT I$ 120 I$=" "+I$+" " 130 REM GET RID OF APOSTROPHES 140 FOR L=1 TO LEN(I$) 150 IF MID$(I$,L,1)="'" THEN I$=LEFT$(I$,L-1)+RIGHT$(I$,LEN(I$)-L):GOTO 150 160 IF L+4<=LEN(I$) THEN IF MID$(I$,L,4)="SHUT" THEN PRINT "SHUT UP...":END 170 NEXT L 180 IF I$=P$ THEN PRINT "PLEASE DON'T REPEAT YOURSELF!":GOTO 80 190 REM 200 REM ------FIND KEYWORD IN I$------ 210 REM 220 RESTORE 230 S=0 240 FOR K=1 TO N1 250 READ K$ 260 IF S>0 THEN 300 270 L=INSTR(I$,K$) 280 IF L>0 THEN S=K:T=L:F$=K$ 300 NEXT K 310 IF S>0 THEN K=S:L=T:GOTO 340 320 K=36:GOTO 600:REM WE DIDN'FIND ANY KEYWORDS 330 REM 340 REM TAKE RIGHT PART OF STRING AND CONJUGATE IT 350 REM USING THE LIST OF STRINGS TO BE SWAPPED 360 REM 370 RESTORE 820 400 C$=" "+RIGHT$(I$,LEN(I$)-LEN(F$)-L+1)+" " 410 FOR X=1 TO N2/2 420 READ S$,R$ 430 FOR L=1 TO LEN(C$) 440 IF L+LEN(S$)>LEN(C$) THEN 490 450 IF MID$(C$,L,LEN(S$))<>S$ THEN 490 460 C$=LEFT$(C$,L-1)+R$+RIGHT$(C$,LEN(C$)-L-LEN(S$)+1) 470 L=L+LEN(R$) 480 GOTO 530 490 IF L+LEN(R$)>LEN(C$) THEN 530 500 IF MID$(C$,L,LEN(R$))<>R$ THEN 530 510 C$=LEFT$(C$,L-1)+S$+RIGHT$(C$,LEN(C$)-L-LEN(R$)+1) 520 L=L+LEN(S$) 530 NEXT L 540 NEXT X 550 IF MID$(C$,2,1)=" "THEN C$=RIGHT$(C$,LEN(C$)-1) 560 FOR L=1 TO LEN(C$) 570 IF MID$(C$,L,1)="!" THEN C$=LEFT$(C$,L-1)+RIGHT$(C$,LEN(C$)-L):GOTO 570 580 NEXT L 590 REM 600 REM NOW USING THE KEYWORD NUMBER (K) GET REPLY 610 REM 620 RESTORE 880 630 FOR X=1 TO R(K):READ F$: NEXT X 640 R(K)=R(K)+1: IF R(K)>N(K) THEN R(K)=S(K) 650 IF RIGHT$(F$, 1)<>"*" THEN PRINT F$:P$=I$:GOTO 80 660 PRINT LEFT$(F$,LEN(F$)-1);C$ 670 P$=I$:GOTO 80 680 REM 690 REM ------PROGRAM DATA FOLLOWS 700 REM 710 REM KEYWORDS 720 REM 730 DATA "CAN YOY", "CAN I", "YOU ARE", "YOU'RE", "I DON'T", "I FEEL" 740 DATA "WHY DON'T YOU", "WHY CAN'T I", "ARE YOU", "I CAN'T", "I AM", "I'M" 750 DATA "YOU", "I WANT", "WHAT", "HOW", "WHO", "WHERE", "WHEN", "WHY" 760 DATA "NAME", "CAUSE", "SORRY", "DREAM", "HELLO", "HI", "MAYBE" 770 DATA "NO", "YOUR", "ALWAYS", "THINK", "ALIKE", "YES", "FRIEND" 780 DATA "COMPUTER", "NO KEY FOUND" 790 REM 800 REM STRING DATA FOR CONJUGATIONS 810 REM 820 DATA " ARE ", " AM ", "WE'RE ", " WAS ", " YOU ", " I ", " YOUR ", " MY " 830 DATA " I'VE ", " YOU'VE ", " I'M ", " YOU'RE " 840 DATA " ME ", " !YOU " 850 REM 860 REM REPLIES 870 REM 880 DATA "DON'T YOU BELIEVE THAT I CAN*" 890 DATA "PERHAPS YOU WOULD LIKE TO BE ABLE TO*" 900 DATA "YOU WANT ME TO BE ABLE TO*" 910 DATA "PERHAPS YOU DON'T WANT TO*" 920 DATA "DO YOU WANT TO BE ABLE TO*" 930 DATA "WHAT MAKES YOU THINK I AM*" 940 DATA "DOES IT PLEASE YOU TO BELIEVE I AM*" 950 DATA "PERHAPS YOU WOULD LIKE TO BE*" 960 DATA "DO YOU SOMETIMES WISH YOU WERE*" 970 DATA "DON'T YOU REALLY*" 980 DATA "WHY DON'T YOU*" 990 DATA "DO YOU WISH TO BE ABLE TO*" 1000 DATA "DOES THAT TROUBLE YOU?" 1010 DATA "TELL ME MORE ABOUT SUCH FEELINGS." 1020 DATA "DO YOU OFTEN FEEL*" 1030 DATA "DO YOU ENJOY FEELING*" 1040 DATA "DO YOU REALLY BELIEVE I DON'T*" 1050 DATA "PERHAPS IN GOOD TIME I WILL*" 1060 DATA "DO YOU WANT ME TO*" 1070 DATA "DO YOU THINK YOU SHOULD BE ABLE TO*" 1080 DATA "WHY CAN'T YOU*" 1090 DATA "WHY ARE YOU INTERESTED IN WHETHER OR NOT I AM*" 1100 DATA "WOULD YOU PREFER IF I WERE NOT*" 1110 DATA "PERHAPS IN YOUR FANTASIES I AM*" 1120 DATA "HOW DO YOU KNOW YOU CAN'T*" 1130 DATA "HAVE YOU TRIED?" 1140 DATA "PERHAPS YOU CAN NOW*" 1150 DATA "DID YOU COME TO ME BECAUSE YOU ARE*" 1160 DATA "HOW LONG HAVE YOU BEEN*" 1170 DATA "DO YOU BELIEVE IT IS NORMAL TO BE*" 1180 DATA "DO YOU ENJOY BEING*" 1190 DATA "WE WERE DISCUSSING YOU --NOT ME." 1200 DATA "OH, I*" 1210 DATA "YOU'RE NOT REALLY TALKING ABOUT ME, ARE YOU?" 1220 DATA "WHAT WOULD IT MEAN TO YOU IF YOU GOT*" 1230 DATA "WHY DO YOU WANT*" 1240 DATA "SUPPOSE YOU GOT*" 1250 DATA "WHAT IF YOU NEVER GOT*" 1260 DATA "I SOMETIMES ALSO WANT*" 1270 DATA "WHY DO YOU ASK?" 1280 DATA "DOES THAT QUESTION INTEREST YOU?" 1290 DATA "WHAT ANSWER WOULD PLEASE YOU THE MOST?" 1300 DATA "WHAT DO YOU THINK?" 1310 DATA "ARE SUCH QUESTIONS ON YOUR MIND OFTEN?" 1320 DATA "WHAT IS IT THAT YOU REALLY WANT TO KNOW?" 1330 DATA "HAVE YOU ASKED ANYONE ELSE?" 1340 DATA "HAVE YOU ASKED SUCH QUESTIONS BEFORE?" 1350 DATA "WHAT ELSE COMES TO MIND WHEN YOU ASK THAT?" 1360 DATA "NAMES DON'T INTEREST ME." 1370 DATA "I DON'T CARE ABOUT NAMES--PLEASE GO ON." 1380 DATA "IS THAT THE REAL REASON?" 1390 DATA "DON'T ANY OTHER REASONS COME TO MIND?" 1400 DATA "DOES THAT REASON EXPLAIN ANYTHING ELSE?" 1410 DATA "WHAT OTHER REASONS MIGHT THERE BE?" 1420 DATA "PLEASE DON'T APOLOGISE!" 1430 DATA "APOLOGIES ARE NOT NECESSARY." 1440 DATA "WHAT FEELINGS DO YOU HAVE WHEN YOU APOLOGISE?" 1450 DATA "DON'T BE SO DEFENSIVE!" 1460 DATA "WHAT DOES THAT DREAM SUGGEST TO YOU?" 1470 DATA "DO YOU DREAM OFTEN?" 1480 DATA "WHAT PERSONS APPEAR IN YOUR DREAMS?" 1490 DATA "ARE YOU DISTURBED BY YOUR DREAMS?" 1500 DATA "HOW DO YOU...PLEASE STATE YOUR PROBLEM." 1510 DATA "YOU DON'T SEEM QUITE CERTAIN." 1520 DATA "WHY THE UNCERTAIN TONE?" 1530 DATA "CAN'T YOU BE MORE POSITIVE?" 1540 DATA "YOU AREN'T SURE?" 1550 DATA "DON'T YOU KNOW?" 1560 DATA "ARE YOU SAYING NO JUST TO BE NEGATIVE?" 1570 DATA "YOU ARE BEING A BIT NEGATIVE." 1580 DATA "WHY NOT?" 1590 DATA "ARE YOU SURE?" 1600 DATA "WHY NO?" 1610 DATA "WHY ARE YOU CONCERNED ABOUT MY*" 1620 DATA "WHAT ABOUT YOUR OWN*" 1630 DATA "CAN YOU THINK OF A SPECIFIC EXAMPLE?" 1640 DATA "WHEN?" 1650 DATA "WHAT ARE YOU THINKING OF?" 1660 DATA "REALLY,ALWAYS?" 1670 DATA "DO YOU REALLY THINK SO?" 1680 DATA "BUT YOU ARE NOT SURE YOU*" 1690 DATA "DO YOU DOUBT YOU*" 1700 DATA "IN WHAT WAY?" 1710 DATA "WHAT RESEMBLENCE DO YOU SEE?" 1720 DATA "WHAT DOES THE SIMILARITY SUGGEST TO YOU?" 1730 DATA "WHAT OTHER CONNECTIONS DO YOU SEE?" 1740 DATA "COULD THERE REALLY BE SOME CONNECTION?" 1750 DATA "HOW?" 1760 DATA "YOU SEEM QUITE POSITIVE." 1770 DATA "ARE YOU SURE?" 1780 DATA "I SEE." 1790 DATA "I UNDERSTAND." 1800 DATA "WHY DO YOU BRING UP THE TOPIC OF FRIENDS?" 1810 DATA "DO YOUR FRIENDS WORRY YOU?" 1820 DATA "DO YOUR FRIENDS PICK ON YOU?" 1830 DATA "ARE YOU SURE YOU HAVE ANY FRIENDS?" 1840 DATA "DO YOU IMPOSE ON YOUR FRIENDS?" 1850 DATA "PERHAPS YOUR LOVE FOR FRIENDS WORRIES YOU." 1860 DATA "DO COMPUTERS WORRY YOU?" 1870 DATA "ARE YOU TALKING ABOUT ME IN PARTICULAR?" 1880 DATA "ARE YOU FRIGHTENED BY MACHINES?" 1890 DATA "WHY DO YOU MENTION COMPUTERS?" 1900 DATA "WHAT DO YOU THINK MACHINES HAVE TO DO WITH YOUR PROBLEMS?" 1910 DATA "DON'T YOU THINK COMPUTERS CAN HELP PEOPLE?" 1920 DATA "WHAT IS IT ABOUT MACHINES THAT WORRIES YOU?" 1930 DATA "SAY, DO YOU HAVE ANY PSYCHOLOGICAL PROBLEMS?" 1940 DATA "WHAT DOES THAT SUGGEST TO YOU?" 1950 DATA "I SEE." 1960 DATA "I'M NOT SURE I UNDERSTAND YOU FULLY." 1970 DATA "COME, COME, ELUCIDATE YOUR THOUGHTS." 1980 DATA "CAN YOU ELABORATE ON THAT?" 1990 DATA "THAT IS QUITE INTERESTING." 2000 REM 2010 REM DATA FOR FINDING RIGHT REPLIES 2020 REM 2030 DATA 1,3,4,2,6,4,6,4,10,4,14,3,17,3,20,2,22,3,25,3 2040 DATA 28,4,28,4,32,3,35,5,40,9,40,9,40,9,40,9,40,9,40,9 2050 DATA 49,2,51,4,55,4,59,4,63,1,63,1,64,5,69,5,74,2,76,4 2060 DATA 80,3,83,7,90,3,93,6,99,7,106,6