M. Sperber Sommersemester 1999
Programmieren für Geisteswissenschaftler
Blatt 8 (Bonus-Runde)
Johnnie gibt Franz Unterricht in Rechtskunde, Beckenbauer bezahlt Cochran nachdem er seinen ersten Prozess gewinnt.
Beckenbauer führt nun aber keinen Prozess!
Wie kommt Johnnie jetzt an sein Geld?
Je nach Ausgang des Geschäfts bekommt ein Geschäftspartner zwei Punkte, wenn er den anderen erfolgreich hereingelegt hat, also selbst nichts hinterlegt hat, aber der andere schon; einen Punkt, wenn beide etwas hinterlegt haben; keinen Punkt, wenn er vom anderen hereingelegt wurde.
Das Spiel ist für die Fortsetzung über viele Runden ausgelegt. Schreibe ein Programm, daß das Spiel über eine angebbare Anzahl von Runden mit zwei beliebigen Partnern spielt und dabei den Punkestand unterhält. Entwickle verschiedene Strategien, und beobachte sie sowohl in einzelnen Spielrunden als auch im Zusammenhang mit wechselnden Partnern.
Denke Dir ein Tier aus. Handelt es sich um einen Fisch? (ja/nein) nein Säugetier vielleicht? (ja/nein) ja Ist es ein Landsäuger? (ja/nein) nein Walfisch? (ja/nein) nein Ich gebe auf. Wie heißt das Tier? Delphin Was für eine Ja/Nein-Frage könnte "Delphin" von "Walfisch" unterscheiden? Gibt es ein solches Tier mit dem Namen "Flipper"? Was wäre die richtige Antwort für "Delphin"? ja Denke Dir ein Tier aus. Handelt es sich um einen Fisch? (ja/nein) nein Säugetier vielleicht? (ja/nein) ja Ist es eine Landsäuger? (ja/nein) nein Gibt es ein solches Tier mit dem Namen "Flipper"? ja Delphin? ja Freude schöner Götterfunken! ...Zum Einlesen der Frage kannst Du die Prozedur read-line benutzen, die eine Zeile einliest und als Zeichenkette zurückgibt.
(define read-line
(lambda ()
(read-line-help '())))
(define read-line-help
(lambda (reverse-chars)
(let ((next (read-char)))
(if (or (eof-object? next)
(char=? #\newline next))
(list->string (reverse reverse-chars))
(read-line-help (cons next reverse-chars))))))