Es gab bereits eine Frage zur Simulation des Monty Hall-Problems . Dieser ist anders. Der Benutzer wird spielen die Monty Hall Problem. Ihr Programm spielt die Rolle des Hosts. Montybot, wenn Sie möchten.
Hier sind die Schritte:
- Wähle (zufällig) aus, welche der drei Türen den Preis verbirgt.
- Geben Sie eine visuelle Anzeige von drei Türen aus. Ein einfacher
ABC
Wille reicht aus. Oder drei Quadrate. Oder Wasauchimmer. - Erhalten Sie Eingaben, indem Sie eine der Türen auswählen. Dies kann ein Mausklick auf die ausgewählte Tür oder eine einzelne Buchstabeneingabe (
B
) oder was auch immer sein. - Öffne eine andere Tür. Sie öffnen die gewählte Tür nicht. Sie öffnen nicht die Tür, die den Hauptpreis verbirgt. Das kann bedeuten, dass Sie keine Wahl haben, oder es kann bedeuten, dass Sie die Wahl zwischen zwei haben. Wenn Sie zwei zur Auswahl haben, wählen Sie eine nach dem Zufallsprinzip aus. Zeigen Sie visuell an, dass die Tür geöffnet wurde und kein Preis dahinter versteckt war. Bei einer programmtextbasierten Eingabe / Ausgabe kann dies so einfach wie die Ausgabe sein
AB0
, um anzuzeigen , dass die TürC
geöffnet wurde. Fühlen Sie sich frei, erfinderischer zu sein. Wenn Sie ein GUI-Programm ausführen, liegt die Wahl der Anzeige bei Ihnen. - Akzeptieren Sie Eingaben des Benutzers. Der Benutzer kann eingeben
stick
oderswitch
(oder für ein GUI-Programm auf Schaltflächen klicken oder eine Auswahleingabe verwenden oder was auch immer). Wenn der Benutzer etwas anderes alsstick
oder eingibtswitch
, ist die Implementierung undefiniert. Mach was du willst. - Geben Sie den Text
You won!
oder ausYou lost
. - Beenden Sie das Programm.
Regeln:
- Wenn Sie etwas zufällig auswählen müssen , sorgen Sie sich nicht um kryptografische Zufälligkeit. Jede
rand()
Funktion reicht aus. - Das Programm darf nicht schummeln. Der Preis muss vorhanden sein, bevor das Spiel beginnt. Das heißt , dass die Schritte in der angegebenen Reihenfolge durchgeführt werden müssen: Zuerst wählen Sie eine Tür , hinter der Sie Ihren Preis zu verstecken, dann fragen Sie den Spieler zu wählen. Die Auswahl der zu öffnenden Tür in Schritt 4 muss in Schritt 4 erfolgen: Sie wird nicht im Voraus ausgewählt.
- Die Ausgabe in Schritt 6 muss ehrlich sein.
- Das ist Code Golf. Der kürzeste Code gewinnt.
Antworten:
APL, 77
Bedürfnisse
⎕IO←0
. Auf Dyalog getestet.Erläuterung
Beispiele
quelle
≠
in der Quelle, die=
in der Erklärung zu einer mutiert .Python, 157
Beispiel:
quelle
PowerShell:
192174Änderungen gegenüber dem Original:
Golfed Code
Code ohne Golf mit Kommentaren
quelle
Javascript,
221197Es werden zwei Aufrufe von Date.now () zur Zufälligkeit mit einer dazwischen liegenden Eingabeaufforderung verwendet, um eine Verzögerung zu gewährleisten. Die Benutzereingabe ist ein 0-basierter Index (die Regel sagte "was auch immer"). Die folgende Warnung gibt an, welche Tür geöffnet wurde. Hier ist eine etwas längere Version, die die Antwort gibt, bevor der Benutzer sie auswählt, um sicherzustellen, dass sie nicht betrügt:
Geige: http://jsfiddle.net/acbabis/9J2kP/
EDIT: Danke Dave
quelle
(function(q,r,s,t,u,v){f='ABC';d=[0,1,2];b=q%3;a=r(f);d.splice(a,1);(a==b)?((r(f[d[q%2]])==t)?s(u):s(v)):(r(f[d[(d[0]==b)+0]])!=t)?s(u):s(v)})(Date.now(),prompt,alert,'stick','You won!','You lost')
"I can't pass Date.now() ... I can, however, pass Date.now"
???date.now
übergibt die Funktion,date.now()
übergibt das Ergebnis der FunktionPHP> = 5,4,
195,192Ausgabe:
quelle