home *** CD-ROM | disk | FTP | other *** search
-
- /*
-
- ─╧├╘╧╥.├
-
- - FROM "┴RTIFICIAL ╔NTELLIGENCE IN ├"
- BY ╚ERBERT ╙CHILDT
-
- - ADDITIONS BY ╩. ╥. ┴PPLEGATE
-
- - PORTED TO ├ ╨OWER
- 18╬OV1987 ┬EN ╨EDERSEN
-
- */
-
- #INCLUDE <STDIO.H>
-
- #DEFINE ═┴╪ 100
- #DEFINE ╙╚╧╥╘ 10
- #DEFINE ╓┼╥┘╙╚╧╥╘ 2
-
- CHAR *RESPONSE[] = █
- "╚OW ARE YOU THIS BEAUTIFUL DAY?",
- "─ID YOU HAVE A HAPPY CHILDHOOD?",
- "─ID YOU HATE YOUR FATHER?",
- "╔ NOT SURE ╔ UNDERSTAND.",
- ""
- ▌;
-
- CHAR *TRANS[] = █
- "FINE","─ON'T YOU HAVE ANY PROBLEMS YOU'D LIKE TO DISCUSS?",
- "FEAR","─O YOU THINK YOUR FEARS ARE REALISTIC?",
- "FEARS","─O YOU THINK YOUR FEARS ARE REALISTIC?",
- "AFRAID","─O YOU THINK YOUR FEARS ARE REALISTIC?",
- "SCARED","┴REN'T YOU OVERLY PARANOID ABOUT THIS?",
- "SCARE","┴REN'T YOU OVERLY PARANOID ABOUT THIS?",
- "DEPRESS","─ON'T BE SO NEGATIVE.",
- "DEPRESSION","╫HAT IS DEPRESSING YOU?",
- "DEPRESSED","╫HAT IS DEPRESSING YOU?",
- "WORRY","╔S IT REALLY THAT IMPORTANT?",
- "WORRIED","╔S IT REALLY THAT CRITICAL?",
- "YOU","╠ET'S NOT TALK ABOUT ME.",
- "THINK","╫HY DO YOU THINK THAT?",
- "THOUGHT","╫HY DID YOU THINK THAT?",
- "HATE","╙O YOU HATE SOMETHING - TELL ME MORE.",
- "WHAT","╫HY TO YOU ASK?",
- "WANT","╫HY DO YOU WANT THAT?",
- "WANTED","╫HY DO YOU WANT THAT?",
- "NEED","╫E ALL NEED MANY THINGS - IS THIS SPECIAL?",
- "NEEDED","╫E ALL NEED MANY THINGS - IS THIS SPECIAL?",
- "DESIRE","╫E ALL HAVE DESIRES - IS THIS SPECIAL?",
- "DESIRED","╫E ALL HAVE DESIRES - IS THIS SPECIAL?",
- "WHY","╥EMEMBER, THERAPY IS GOOD FOR YOU.",
- "KNOW","╚OW DO YOU KNOW THAT?",
- "BYE","┘OUR BILL WILL BE MAILED TO YOU.",
- "MURDER","╔ DON'T LIKE KILLING.",
- "PAIN","─O YOU RESENT THIS FACT?",
- "ABUSE","─O YOU RESENT THIS FACT?",
- "ABUSED","─O YOU RESENT THIS FACT?",
- "HURT","─O YOU HAVE RESENTMENT OVER THIS HURT?",
- "GOD","┴RE YOU A RELIGIOUS PERSON?",
- "KILL","╔T IS WRONG TO KILL.",
- "SHAME","┴ND WHY DO YOU FEEL THAT WAY?",
- "SHAMED","┴ND WHY DO YOU FEEL THAT WAY?",
- "JERK","─ON'T EVER CALL ME A JERK!",
- "FUCK","╧BSCENITIES WIROBT YOU NOWHERE!",
- "SHIT","╧BSCENITIES WILL T YOU NOWHERE!",
- "DAMN","╧BSCENITIES WILL ET YOU NOWHERE!",
- "SCREW","╧BSCENITIES WIROBET YOU NOWHERE!",
- "CAN'T","─ON'T BE NEGATIVE - BE POSITIVE.",
- "FAILURE","╙TRIVE FOR SUCCESS.",
- "NEVER","─ON'T BE NEGATIVE - BE POSITIVE",
- "UNHAPPY","╫HY ARE YOU UNHAPPY?",
- "LOVE","╫HY DO YOU FEEL THAT WAY?",
- "LOVED","╫HY DO YOU FEEL THAT WAY?",
- "FEEL","╘ELL ME MORE ABOUT SUCH FEELINGS.",
- "FELT","╘ELL ME MORE ABOUT SUCH FEELINGS.",
- "FEELING","─O YOU ENJOY FEELING",
- "AM","┴RE YOU REALLY",
- "MACHINE","─O MACHINES WORRY YOU?",
- "COMPUTER","┴RE YOU FRIGHTENED BY MACHINES?",
- "CAUSE","╔S THAT THE REAL REASON?",
- "BECAUSE","┴RE YOU CERTAIN?",
- "SORRY","╘HERE'S NO NEED TO APOLOGIZE.",
- "DREAM","╫HAT DOES THAT DREAM SUGGEST TO YOU?",
- "DREAMS","╫HAT DO YOU THINK THAT MEANS?",
- "HELLO","╟REETINGS. ╨LEASE STATE YOUR PROBLEM.",
- "MAYBE","╫HY THE UNCERTAIN TONE?",
- "ALWAYS","╥EALLY? ┴LWAYS?",
- "ALIKE","╔N WHAT WAY?",
- "YES","┘OU SEEM QUITE POSITIVE.",
- "NO","╙HOULD YOU REALLY BE SO NEGATIVE",
- "FRIEND","─O YOUR FRIENDS WORRY YOU?"NGTHER","─O YOU HAVE DISTURBING FEELINGS ABOUT YOUR THER?",
- "FATHER","─O YOU EVER RESENT YOUR FATHER?",
- "SISTER","╫HAT SORT OF THOUGHTS DO YOU HAVE ABOUT YOUR SISTER?",
- "SISTERS","─ID ONE SISTER IN PARTICULAR BOTHER YOU?"N
- "BROTHER","┴RE YOU AND YOUR BROTHER CLOSE?",
- "BROTHERS","─ID YOU HAVE PROBLEMS WITH ONE BROTHER IN PARTICULAR?",
- ""
- ▌;
-
- CHAR TOPICS[═┴╪][80]; /* HOLDS OLD TOPICS */
-
- CHAR TOKEN[80];
- CHAR *PñPOS;
- INT RES=0; /* INDEX INTO RESPONSE ARRAY */
- INT HEAD=0; /* HEAD OF TOPICS QUEUE */
- INT TAIL=0; /* TAIL OF TOPICS QUEUE */
-
- MAIN()
- █
- CHAR S[80];
-
- PRINTF("%S\N",RESPONSE[RES++]);
-
- DO █
- PRINTF(": ");
- PñPOS=S;
- TS(S);
- RESPOND(S);
- ▌ WHILE(STRCMP(S,"BYE"));
- ▌
-
- /* CREATE THE DOCTOR'S RESPONSES */
- RESPOND(S)
- CHAR *S;
- █
- CHAR T[80];
- INT LOC;
-
- IF(STRLEN(S)<╓┼╥┘╙╚╧╥╘ && STRCMP(S,"BYE")) █
- IF(FINDñTOPIC(T)) █
- PRINTF("┘OU JUST SAID: ");
- PRINTF("%S" "σT);
- PRINTF("TELL ME MORE. "σ);
- ▌
- ELSE █
- IF (!*RESPONSE[RES]) RES=0; /* START OVER AGAIN */
- PRINTF("%S\N",RESPONSE[RES++]);
- ▌
- RETURN ;
- ▌
-
- IF(INñTOPICS(S)) █
- PRINTF("╙TOP REPEATING YOURSELF! "σ);
- RETURN;
- ▌
-
- IF(STRLEN(S)>╙╚╧╥╘) ASSERTñTOPIC(S);
-
- DO █
- TñTOKEN();
- LOC=LOOKUP(TOKEN);
- IF(LOC!=-1) █
- PRINTF("%S "σ,TRANS[LOC+1]);
- RETURN;
- ▌
- ▌ WHILE(*TOKEN);
- /* COMMENT OF LAST RESORT */
- PRINTF("╘ELL ME MORE... N");
- ▌
-
- /* ╠OOKUP A KEY WORD IN TRANSLATION TABLE */
- LOOKUP(TOKEN)
- CHAR *TOKEN;
- █
- INT T;
-
- T=0;
- WHILE(*TRANS[T]) █
- IF(!STRCMP(TRANS[T],TOKEN)) RETURN T;
- T++;
- ▌
- RETURN -1;
- ▌
-
- /* PLACE A TOPIC INTO THE TOPICS DATABASE */
- ASSERTñTOPIC(T)
- CHAR *T;
- █
- IF(HEAD==═┴╪) HEAD=0; /* WRAP AROUND */
- STRCPY(TOPICS[HEAD],T);
- HEAD++;
- ▌
-
- /* RETRIEVE A TOPIC */
- FINDñTOPIC(T)
- CHAR *T;
- █
- IF(TAIL!=HEAD) █
- STRCPY(T,TOPICS[TAIL]);
- ","─I
- ++;
- /* WRAP AROUND IF NECESSARY */
- IF(TAIL==═┴╪) TAIL=0;
- RETURN 1;
- ▌
- RETURN 0;
- ▌
-
- /* SEE IF IN TOPICS QUEUE */
- INñTOPICS(S)
- CHAR *S;
- █
- INT T;
-
- FOR(T=0;T<═┴╪;T++)
- IF(!STRCMP(S,TOPICS[T])) RETURN 1;
-
- RETURN 0;
- ▌
-
- /* RETURN A TOKEN FROM THE INPUT STREAM */
- TñTOKEN()
- █
- CHAR *P;
-
- P=TOKEN;
- /* SKIP SPACES */
- WHILE(*PñPOS==' ') PñPOS++;
-
- IF(*PñPOS=='\0') █ /* IS END OF INPUT */
- *P++='\0';
- RETURN;
- ▌
- IF(ISñIN(*PñPOS,".!?")) █
- *P=*PñPOS;
- P++, PñPOS++;
- *P='\0';
- RETURN;
- ▌
-
- /* READ WORD UNTIL */
- WHILE(*PñPOS!=' ' && !ISñIN(*PñPOS,".,;?!") && *PñPOS) █
- *P=*PñPOS++;
- P++;
- ▌
- *P='\0';
- ▌
-
- ISñIN(C,S)
- CHAR C,*S;
- █
- WHILE(*S) █
- IF(C==*S) RETURN 1;
- S++;
- ▌
- RETURN 0;
- ▌
-
-