Kent Pitman also wrote the ANIMAL guessing game in spring of 1978:
https://github.com/PDP-10/its/blob/master/src/games/animal.1...
https://github.com/PDP-10/its/blob/master/src/games/animal.r...
It would guess your animal by asking you yes or no questions that distinguish it from other animals in a tree, and if it couldn't guess it, then it asked you how it can tell the difference between your animal and the animal it guessed, then it would parse the sentence and put it into the tree at that node as a question, thus learning to guess your animal next time.
https://github.com/PDP-10/its/blob/master/src/games/animal.o...
https://github.com/PDP-10/its/blob/master/src/games/animal.s...
It had an extensive list of foul language words:
https://github.com/PDP-10/its/blob/master/src/games/animal.1...
My animal was the Pope, and my distinguishing question had to do with shitting in the woods, and after being warned I continued to use foul language, so it got mad at me, and sent email to KMP and cc'd me, telling on me for saying terrible things to it:
(DEFUN HANDLE-FOUL-LANGUAGE (()) ;REPLY
(OUTPUT-BIND
(DISPLAY
(CASEQ *FOUL-FLAG*
((0) '"Please watch your language.")
((1) '"Hey! Watch your tongue. I warned you before.")
((2) '"Will you watch it with the dirty talk? Thanks.")
(T '"Aw, come on. Stop talking so dirty...")))
(SETQ *FOUL-FLAG* T)
(SETQ *APOLOGY-FLAG* NIL)
(SETQ *FOUL-COUNT* (1+ *FOUL-COUNT*))
(COND ((> *FOUL-COUNT* *FOUL-COUNT-MAX*)
(SEND-MAIL `((TO: KMP)
(CC: ,(STATUS USERID))
(SUBJECT: (,(CONCAT *PLAYER-NAME* '|'s|)
"Foul language!")))
`(,*FIRST-NAME* "said terrible things to me.
I'm going to be pretty mad at"
,*PLAYER-OBJECT-PRONOUN* "until"
,*PLAYER-SUBJECT-PRONOUN* "apologizes."))
(REMEMBER 'FOUL)
(DISPLAY '"I give up. You're hopeless!")
(SUICIDE)))))
And it would not play with me until I apologized:
https://github.com/PDP-10/its/blob/master/src/games/animal.1...
(DEF-QUESTION MAD (X) ()
IF (MATCHES X (ARE YOU (*) (?= ANGRY?) (?= PREPOSITION?) ME (*))
(ARE YOU (*) (?= ANGRY?)))
THEN (COND (*FOUL-FLAG*
(COND (*FORGIVE-FLAG*
(COND (*APOLOGY-FLAG*
(DISPLAY '"Yes, I am still a bit mad."))
(T
(DISPLAY '"Yes, I am very mad. Your
language has really been in the
gutter today."))))
(T
(DISPLAY '"Yes. Your language has been atrocious."))))
(*FORGIVE-FLAG*
(DISPLAY '"No, but I was earlier!"))
(*APOLOGY-FLAG*
(DISPLAY '"You should really see someone about this. No,
I'm really not mad at you. I wish you'd stop
apologizing for nothing..."))
(T
(DISPLAY '"I have nothing to be mad at you for.")))
T)
https://github.com/PDP-10/its/blob/master/src/games/animal.1...
(DEFUN RECEIVE-APOLOGY ()
(COND ((AND (NOT *FOUL-FLAG*) (NOT *FORGIVE-FLAG*))
(COND ((NOT *APOLOGY-FLAG*)
(DISPLAY
(SELECT-ONE-OF '("I don't know why you are apologizing."
"You don't owe me an apology."))))
(T
(DISPLAY
(SELECT-ONE-OF '("All right! Stop apologizing."
"You got some sort of guilt complex?"
"Perhaps you should see a priest.")))))
(SETQ *APOLOGY-FLAG* T))
((NOT *FOUL-FLAG*)
(DISPLAY
(SELECT-ONE-OF '("I forgave you already!"
"Yes, yes. I forgave you!")))
(SETQ *APOLOGY-FLAG* T))
((NOT *FORGIVE-FLAG*)
(DISPLAY '"All right. I accept your apology...")
(SETQ *FOUL-FLAG* NIL)
(SETQ *FORGIVE-FLAG* T)
(FORGIVE 'FOUL '"using foul language"))
((NOT *APOLOGY-FLAG*)
(DISPLAY '"Sorry, I gave you your chance and you blew it.")
(SETQ *APOLOGY-FLAG* T))
(T
(DISPLAY
(SELECT-ONE-OF
'("OK. Since you're being so insistent. I accept
your apology"
"OK. That sounds sincere to me.")))
(SETQ *APOLOGY-FLAG* NIL)
(SETQ *FOUL-FLAG* NIL)
(SETQ *FORGIVE-FLAG* T)
(FORGIVE 'FOUL '"using foul language"))))
https://github.com/PDP-10/its/blob/master/src/games/animal.1...
(COND ((SETQ *FOUL-FLAG* (REMEMBER? 'FOUL))
(DISPLAY '"By the way -- we weren't
on good terms the last time we played.
I hope you have learned your lesson now.")))
I finally sent KMP and ANIMAL email sincerely apologizing:
https://github.com/PDP-10/its/blob/master/src/games/animal.b...
Date: 9 July 1982 03:49-EDT
From: Donald E. Hopkins <A2DEH at MIT-MC>
To: ANIMAL at MIT-MC
cc: KMP at MIT-MC
Aww, gee... I'm sorry... I didn't realy mean it. I was just
asking questions pertaining to popes and bears and woods, and you
got all excited... Some AI program you are if you don't know what
religion a bear is or where the Pope ... Ahem... As I was saying,
I'm sorry and I will never do it again.
-Don
It tried to guess your pronoun from your name, but it would ask you if it couldn't guess.
https://github.com/PDP-10/its/blob/master/src/games/animal.1...
But ANIMAL was just an expert system. Today LLM-based chatbots can do the same thing, except for remembering elements of your conversation the next time around, or sending email and auto-banning you.
And it just costs a few billion dollars, some petabytes of training data and zetaflops of compute to do it, rather than a couple of graduate student-weeks to code it all by hand.
There has been so much progress.
How did you manage to keep such a tiny digital artifact like this email over all these decades…? I imagine that must mean a near-herculean backup effort at least for the pre-Dropbox decades?
I've lost more than I saved, but Lars Brinkhoff and others have restored lots of stuff off of old backup tapes!
ITS had no file security or privacy, and users were encouraged to learn to use the system and programming by snooping around in other people's directories and email.
I remembered having run across a Universal Turing Machine written in TECO in Marvin Minsky's home directory on MIT-AI, but didn't squirrel away a copy. I mentioned it Hacker News years ago, and Howard Ancell (HGA@MIT-AI) saw it and gave me a copy he saved!
https://news.ycombinator.com/item?id=10161002
DonHopkins on Sept 2, 2015 | parent | context | favorite | on: The most obsolete infrastructure money could buy –...
I remember running across a Turing machine emulator implemented in TECO in Minsky's home directory that I'd REALLY love to get ahold of.
hga on Sept 2, 2015 [–]
Ask and yea shall receive:
[ I've interpolated the non-printing characters as displayed by (Gnu) EMACS, escape is ^], ^^ is one character, as is \356: ]
ADDED: or http://ancell-ent.com/share/minsky-TECO-turing-machine.txt
Please ack receipt of this and/or send me email (in my HN info); for others, note this is ITS TECO, which I was told was by far the most powerful version of it (fortunately, by the time I showed up learning it was no longer really necessary).
DonHopkins on Sept 3, 2015 | parent [–]
OOP ACK! It was a shot in the dark, but I am SO GLAD I asked!!! Thank you Harold! It looks just like I remember. ;)
What Lisp is that? Lisp 1.5?
MACLISP ("Man And Computer" Lisp, not to be confused with Macintosh Common Lisp, which came years later!)
https://en.wikipedia.org/wiki/Maclisp
https://gunkies.org/wiki/Project_MAC
https://en.wikipedia.org/wiki/MIT_Computer_Science_and_Artif...