Il y a déjà eu une question sur la simulation du problème de Monty Hall . Celui-ci est différent. L' utilisateur va jouer le problème de Monty Hall. Votre programme jouera le rôle d'hôte. Montybot, si vous voulez.
Voici les étapes:
- Choisissez (au hasard) laquelle des trois portes cache le prix.
- Sortie d'un affichage visuel de trois portes. Une simple
ABC
volonté suffira. Ou trois carrés. Ou peu importe. - Recevez une entrée en choisissant l'une des portes. Cela peut être un clic de souris sur la porte choisie, ou une entrée d'une seule lettre (
B
) ou autre. - Ouvrez une autre porte. Vous n'ouvrez pas la porte choisie. Vous n'ouvrez pas la porte en cachant le prix principal. Cela peut signifier que vous n'avez pas le choix, ou cela peut signifier que vous avez le choix entre deux. Si vous avez le choix entre deux, choisissez-en un au hasard. Indiquez visuellement que la porte a été ouverte et qu'aucun prix n'a été caché derrière. Pour une entrée / sortie textuelle de programme, cela peut être aussi simple que de sortir
AB0
, pour montrer que la porteC
a été ouverte. N'hésitez pas à être plus inventif. Si vous faites un programme GUI, votre choix d'affichage dépend de vous. - Acceptez les entrées de l'utilisateur. L'utilisateur peut entrer
stick
ouswitch
(ou, pour un programme GUI, cliquer sur les boutons, ou utiliser une entrée de sélection, ou autre). Si l'utilisateur entre autre chose questick
ouswitch
, l'implémentation n'est pas définie. Fais ce que tu veux. - Sortez le texte
You won!
ouYou lost
. - Arrêtez le programme.
Règles:
- Lorsque vous devez choisir quelque chose au hasard , ne vous inquiétez pas du caractère aléatoire cryptographique. N'importe quelle
rand()
fonction fera l'affaire. - Le programme ne doit pas tricher. Le prix doit être en place avant le début du jeu. C'est-à-dire que les étapes doivent être effectuées dans l'ordre indiqué: choisissez d' abord une porte derrière laquelle cacher votre lot, puis demandez au joueur de choisir. Le choix de la porte à ouvrir à l'étape 4 doit se faire à l'étape 4: elle n'est pas sélectionnée à l'avance.
- Le résultat de l'étape 6 doit être honnête.
- C'est le golf de code. Le code le plus court gagne.
Réponses:
APL, 77
Besoins
⎕IO←0
. Testé sur Dyalog.Explication
Exemples
la source
≠
dans la source qui se transforme en un=
dans l'explication.Python, 157
Exemple:
la source
PowerShell:
192174Changements par rapport à l'original:
Golfed Code
Code sans golf avec commentaires
la source
Javascript,
221197Il utilise deux appels à Date.now () pour l'aléatoire avec une invite entre les deux pour garantir un retard. L'entrée utilisateur est un index basé sur 0 (la règle a dit "peu importe"). L'alerte suivante indique quelle porte a été ouverte. Voici une version légèrement plus longue qui donne la réponse avant que l'utilisateur ne choisisse, pour vérifier qu'elle ne triche pas:
Violon: http://jsfiddle.net/acbabis/9J2kP/
EDIT: Merci dave
la source
(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
passe la fonction,date.now()
passe le résultat de la fonctionPHP> = 5,4,
195192Production:
la source