Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- 10 REM
- 20 REM ELIZA/DOCTOR
- 30 REM CREATED BY JOSEPH WEIZENBAUM
- 40 REM THIS VERSION BY JEFF SHRAGER
- 50 REM EDITED AND MODIFIED FOR MITS 8K BASIC 4.0 BY STEVE NORTH
- 60 REM CREATIVE COMPUTING PO BOX 789-M MORRISTOWN NJ 07960
- 70 REM
- 80 REM --- INITIALIZATION ---
- 85 CLEAR 5000
- 90 DIM C$,I$,K$,F$,S$,R$,P$,Z$
- 95 DEFINT A-Z
- 100 DIM S(36),R(36),N(36)
- 110 N1=36:N2=12:N3=112
- 120 FOR X=1 TO N1+N2+N3:READ Z$:NEXT X:REM SAME AS RESTORE
- 130 FOR X=1 TO N1
- 140 READ S(X),L:R(X)=S(X):N(X)=S(X)+L-1
- 150 NEXT X
- 160 PRINT "Hi! I'm Eliza. What's your problem?"
- 170 REM
- 180 REM --- USER INPUT SECTION ---
- 190 REM
- 200 INPUT I$
- 201 I$=" "+I$+" "
- 210 REM GET RID OF APOSTROPHES
- 220 FOR L=1 TO LEN(I$)
- 230 IF MID$(I$,L,1)="'"THEN I$=LEFT$(I$,L-1)+RIGHT$(I$,LEN(I$)-L):GOTO230
- 240 IF L+4<=LEN(I$) THEN IF MID$(I$,L,4)="SHUT" THEN GOTO 245
- 244 GOTO 250
- 245 PRINT "Shut up!"
- 246 END
- 250 NEXT L
- 255 IF I$=P$ THEN PRINT "Please don't repeat yourself!":GOTO 170
- 260 REM
- 270 REM --- FIND KEYWORD IN I$
- 280 REM
- 290 RESTORE
- 295 S=0
- 300 FOR K=1 TO N1
- 310 READ K$
- 315 IF S>0 THEN 360
- 320 FOR L=1 TO LEN(I$)-LEN(K$)+1
- 340 IF MID$(I$,L,LEN(K$))=K$ THEN S=K:T=L:F$=K$
- 350 NEXT L
- 360 NEXT K
- 365 IF S>0 THEN K=S:L=T:GOTO 390
- 370 K=N1:GOTO 570:REM WE DIDN'T FIND ANY KEYWORDS
- 380 REM
- 390 REM TAKE RIGHT PART OF STRING AND CONJUGATE IT
- 400 REM USING THE LIST OF STRINGS TO BE SWAPPED
- 410 REM
- 412 REM F$ MAY ONLY BE PART OF A WORD. MAKE IT INTO THE ENTIRE WORD.
- 414 FOR X=L+LEN(F$)-1 TO LEN(I$)
- 415 IF MID$(I$,X,1) <> " " THEN 418
- 416 F$=MID$(I$,L,X-L)
- 417 GOTO 419
- 418 NEXT X
- 419 REM
- 420 RESTORE:FOR X=1 TO N1:READ Z$:NEXT X:REM SKIP OVER KEYWORDS
- 430 C$=" "+RIGHT$(I$,LEN(I$)-LEN(F$)-L+1)
- 440 FOR X=1 TO N2/2
- 450 READ S$,R$
- 460 FOR L=1 TO LEN(C$)
- 470 IF L+LEN(S$)-1 > LEN(C$) THEN 510
- 480 IF MID$(C$,L,LEN(S$))<>S$ THEN 510
- 490 C$=LEFT$(C$,L-1)+R$+RIGHT$(C$,LEN(C$)-L-LEN(S$)+1)
- 495 L=L+LEN(R$)
- 500 GOTO 540
- 510 IF L+LEN(R$)-1 > LEN(C$) THEN 540
- 520 IF MID$(C$,L,LEN(R$))<>R$ THEN 540
- 530 C$=LEFT$(C$,L-1)+S$+RIGHT$(C$,LEN(C$)-L-LEN(R$)+1)
- 535 L=L+LEN(S$)
- 540 NEXT L
- 550 NEXT X
- 555 IF MID$(C$,2,1)=" " THEN C$=RIGHT$(C$,LEN(C$)-1):REM ONLY 1 SPACE
- 560 REM
- 570 REM NOW USING THE KEYWORD NUMBER (K) GET REPLY
- 580 REM
- 590 RESTORE:FOR X=1 TO N1+N2:READ Z$:NEXT X
- 600 FOR X=1 TO R(K):READ F$:NEXT X:REM READ RIGHT REPLY
- 610 R(K)=R(K)+1:IF R(K)>N(K) THEN R(K)=S(K)
- 620 IF RIGHT$(F$,1)<>"*" THEN PRINT F$:P$=I$:GOTO 170
- 630 PRINT LEFT$(F$,LEN(F$)-1);C$
- 640 P$=I$:GOTO 170
- 1000 REM
- 1010 REM --- PROGRAM DATA FOLLOWS ---
- 1020 REM
- 1030 REM KEYWORDS
- 1040 REM
- 1045 REM 1 2 3 4 5 6
- 1050 DATA "CAN YOU","CAN I","YOU ARE","YOURE","I DONT","I FEEL"
- 1055 REM 7 8 9 10 11 12
- 1060 DATA "WHY DONT YOU","WHY CANT I","ARE YOU","I CANT","I AM","IM "
- 1065 REM 13 14 15 16 17 18 19 20
- 1070 DATA "YOU ","I WANT","WHAT","HOW","WHO","WHERE","WHEN","WHY"
- 1075 REM 21 22 23 24 25 26 27
- 1080 DATA "NAME","CAUSE","SORRY","DREAM","HELLO","HI ","MAYBE"
- 1085 REM 28 29 30 31 32 33 34
- 1090 DATA " NO","YOUR","ALWAYS","THINK","ALIKE","YES","FRIEND"
- 1095 REM 35 36
- 1100 DATA "COMPUTER","NOKEYFOUND"
- 1200 REM
- 1210 REM STRING DATA FOR CONJUGATIONS
- 1220 REM
- 1225 REM 1 1 2 2 3 3 4 4
- 1230 DATA " ARE "," AM ","WERE ","WAS "," YOU "," I ","YOUR ","MY "
- 1233 REM 5 5 6 6
- 1235 DATA " IVE "," YOUVE "," IM "," YOURE "
- 1300 REM
- 1310 REM REPLIES
- 1320 REM
- 1325 REM ANSWERS 1-3: CAN YOU
- 1330 DATA "DON'T YOU BELIEVE THAT I CAN*"
- 1340 DATA "PERHAPS YOU WOULD LIKE TO BE ABLE TO*"
- 1350 DATA "YOU WANT ME TO BE ABLE TO*"
- 1355 REM ANSWERS 4-5: CAN I
- 1360 DATA "PERHAPS YOU DON'T WANT TO*"
- 1365 DATA "DO YOU WANT TO BE ABLE TO*"
- 1366 REM ANSWERS 6-9: YOU ARE and YOURE
- 1370 DATA "WHAT MAKES YOU THINK I AM*"
- 1380 DATA "DOES IT PLEASE YOU TO BELIEVE I AM*"
- 1390 DATA "PERHAPS YOU WOULD LIKE TO BE*"
- 1400 DATA "DO YOU SOMETIMES WISH YOU WERE*"
- 1405 REM ANSWERS 10-13: I DONT
- 1410 DATA "DON'T YOU REALLY*"
- 1420 DATA "WHY DON'T YOU*"
- 1430 DATA "DO YOU WISH TO BE ABLE TO*"
- 1440 DATA "Does that trouble you?"
- 1445 REM ANSWERS 14-16: I FEEL
- 1450 DATA "Tell me more about such feelings."
- 1460 DATA "DO YOU OFTEN FEEL*"
- 1470 DATA "DO YOU ENJOY FEELING*"
- 1475 REM ANSWERS 17-19: WHY DONT YOU
- 1480 DATA "DO YOU REALLY BELIEVE I DON'T*"
- 1490 DATA "PERHAPS IN GOOD TIME I WILL*"
- 1500 DATA "DO YOU WANT ME TO*"
- 1505 REM ANSWERS 20-21: WHY CANT I
- 1510 DATA "DO YOU THINK YOU SHOULD BE ABLE TO*"
- 1520 DATA "WHY CAN'T YOU*"
- 1525 REM ANSWERS 22-24: ARE YOU
- 1530 DATA "WHY ARE YOU INTERESTED IN WHETHER OR NOT I AM*"
- 1540 DATA "WOULD YOU PREFER IF I WERE NOT*"
- 1550 DATA "PERHAPS IN YOUR FANTISIES I AM*"
- 1555 REM ANSWERS 25-27: I CANT
- 1560 DATA "HOW DO YOU KNOW YOU CAN'T*"
- 1570 DATA "Have you tried?"
- 1580 DATA "PERHAPS YOU CAN NOW*"
- 1585 REM ANSWERS 28-31: I AM and IM
- 1590 DATA "DID YOU COME TO ME BECAUSE YOU ARE*"
- 1600 DATA "HOW LONG HAVE YOU BEEN*"
- 1610 DATA "DO YOU BELIEVE IT IS NORMAL TO BE*"
- 1620 DATA "DO YOU ENJOY BEING*"
- 1625 REM ANSWERS 32-34: YOU
- 1630 DATA "We were discussing you -- not me."
- 1640 DATA "OH, I*"
- 1650 DATA "You're not really talking about me, are you?"
- 1655 REM ANSWERS 35-39: I WANT
- 1660 DATA "WHAT WOULD IT MEAN TO YOU IF YOU GOT*"
- 1670 DATA "WHY DO YOU WANT*"
- 1680 DATA "SUPPOSE YOU SOON GOT*"
- 1690 DATA "WHAT IF YOU NEVER GOT*"
- 1700 DATA "I SOMETIMES ALSO WANT*"
- 1705 REM ANSWERS 40-48: WHAT, HOW, WHO, WHERE, WHEN and WHY
- 1710 DATA "Why do you ask?"
- 1720 DATA "Does that question interest you?"
- 1730 DATA "What answer would please you the most?"
- 1740 DATA "What do you think?"
- 1750 DATA "Are such questions on your mind often?"
- 1760 DATA "What is it that you really want to know?"
- 1770 DATA "Have you asked anyone else?"
- 1780 DATA "Have you asked such questions before?"
- 1790 DATA "What else comes to mind when you ask that?"
- 1795 REM ANSWERS 49-50: NAME
- 1800 DATA "Names don't interest me."
- 1810 DATA "I don't care about names -- please go on."
- 1815 REM ANSWERS 51-54: CAUSE
- 1820 DATA "Is that the real reason?"
- 1830 DATA "Don't any other reasons come to mind?"
- 1840 DATA "Does that reason explain anything else?"
- 1850 DATA "What other reasons might there be?"
- 1855 REM ANSWERS 55-58: SORRY
- 1860 DATA "Please don't apologize!"
- 1870 DATA "Apologies are not necessary."
- 1880 DATA "What feelings do you have when you apologize?"
- 1890 DATA "Don't be so defensive!"
- 1895 REM ANSWERS 59-62: DREAM
- 1900 DATA "What does that dream suggest to you?"
- 1910 DATA "Do you dream often?"
- 1920 DATA "What persons appear in your dreams?"
- 1930 DATA "Are you disturbed by your dreams?"
- 1935 REM ANSWER 63: HELLO and HI
- 1940 DATA "How do you do ... Please state your problem."
- 1945 REM ANSWERS 64-68: MAYBE
- 1950 DATA "You don't seem quite certain."
- 1960 DATA "Why the uncertain tone?"
- 1970 DATA "Can't you be more positive?"
- 1980 DATA "You aren't sure?"
- 1990 DATA "Don't you know?"
- 1995 REM ANSWERS 69-73: NO
- 2000 DATA "Are you saying no just to be negative?"
- 2010 DATA "You are being a bit negative."
- 2020 DATA "Why not?"
- 2030 DATA "Are you sure?"
- 2040 DATA "Why no?"
- 2045 REM ANSWERS 74-75: YOUR
- 2050 DATA "WHY ARE YOU CONCERNED ABOUT MY*"
- 2060 DATA "WHAT ABOUT YOUR OWN*"
- 2065 REM ANSWERS 76-79: ALWAYS
- 2070 DATA "Can you think of a specific example?"
- 2080 DATA "When?"
- 2090 DATA "What are you thinking of?"
- 2100 DATA "Really, always?"
- 2105 REM ANSWERS 80-82: THINK
- 2110 DATA "Do you really think so?"
- 2120 DATA "BUT YOU ARE NOT SURE YOU*"
- 2130 DATA "DO YOU DOUBT YOU*"
- 2135 REM ANSWERS 83-89: ALIKE
- 2140 DATA "In what way?"
- 2150 DATA "What resemblance do you see?"
- 2160 DATA "What does the similarity suggest to you?"
- 2170 DATA "What other connections do you see?"
- 2180 DATA "Could there really be some connection?"
- 2190 DATA "How?"
- 2200 DATA "You seem quite positive."
- 2205 REM ANSWERS 90-92: YES
- 2210 DATA "Are you sure?"
- 2220 DATA "I see."
- 2230 DATA "I understand."
- 2235 REM ANSWERS 93-98: FRIEND
- 2240 DATA "Why do you bring up the topic of friends?"
- 2250 DATA "Do your friends worry you?"
- 2260 DATA "Do your friends pick on you?"
- 2270 DATA "Are you sure you have any friends?"
- 2280 DATA "Do you impose on your friends?"
- 2290 DATA "Perhaps your love for friends worries you."
- 2295 REM ANSWERS 99-105: COMPUTER
- 2300 DATA "Do computers worry you?"
- 2310 DATA "Are you talking about me in particular?"
- 2320 DATA "Are you frightened by machines?"
- 2330 DATA "Why do you mention computers?"
- 2340 DATA "What do you think machines have to do with your problem?"
- 2350 DATA "Don't you think computers can help people?"
- 2360 DATA "What is it about machines that worries you?"
- 2365 REM ANSWERS 106-112: no key found
- 2370 DATA "Say, do you have any psychological problems?"
- 2380 DATA "What does that suggest to you?"
- 2390 DATA "I see."
- 2400 DATA "I'm not sure I understand you fully."
- 2410 DATA "Come come, elucidate your thoughts."
- 2420 DATA "Can you elaborate on that?"
- 2430 DATA "That is quite interesting."
- 2500 REM
- 2510 REM DATA FOR FINDING RIGHT REPLIES
- 2520 REM
- 2525 REM CAN YOU through I CANT
- 2530 DATA 1,3,4,2,6,4,6,4,10,4,14,3,17,3,20,2,22,3,25,3
- 2535 REM I AM through WHY
- 2540 DATA 28,4,28,4,32,3,35,5,40,9,40,9,40,9,40,9,40,9,40,9
- 2545 REM NAME through ALWAYS
- 2550 DATA 49,2,51,4,55,4,59,4,63,1,63,1,64,5,69,5,74,2,76,4
- 2555 REM THINK through NOKEYFOUND
- 2560 DATA 80,3,83,7,90,3,93,6,99,7,106,6
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement