Ya ha habido una pregunta sobre la simulación del problema de Monty Hall . Este es diferente. El usuario va a reproducir el problema de Monty Hall. Su programa desempeñará el papel del anfitrión. Montybot, si quieres.
Aquí están los pasos:
- Elija (al azar) cuál de las tres puertas esconde el premio.
- Salida de una pantalla visual de tres puertas. Un simple
ABC
lo hará. O tres cuadrados. O lo que sea. - Reciba información eligiendo una de las puertas. Esto podría ser un clic del mouse en la puerta elegida, o una entrada de una sola letra (
B
) o lo que sea. - Abre otra puerta. No abres la puerta elegida. No abres la puerta escondiendo el premio principal. Eso puede significar que no tiene otra opción, o puede significar que tiene una opción de dos. Si tiene dos opciones, elija una al azar. Indique visualmente que la puerta se ha abierto y que no se oculta ningún premio detrás de ella. Para un programa de entrada / salida basada en texto, esto podría ser tan simple como la salida
AB0
, para mostrar que la puertaC
se ha abierto. Siéntase libre de ser más inventivo. Si está haciendo un programa GUI, su elección de pantalla depende de usted. - Aceptar aportes del usuario. El usuario puede ingresar
stick
oswitch
(o, para un programa GUI, hacer clic en los botones, o usar una entrada de selección, o lo que sea). Si el usuario ingresa algo que no seastick
oswitch
, la implementación no está definida. Haz lo que quieras. - Salida del texto
You won!
oYou lost
. - Terminar el programa.
Reglas:
- Cuando tenga que elegir algo al azar , no se preocupe por la aleatoriedad criptográfica. Cualquier
rand()
función servirá. - El programa no debe hacer trampa. El premio debe estar en su lugar antes de que comience el juego. Es decir que los pasos deben realizarse en el orden dado: primero elige una puerta detrás de la cual esconder tu premio, luego pide al jugador que elija. La elección de qué puerta abrir en el paso 4 debe realizarse en el paso 4: no se selecciona de antemano.
- El resultado en el paso 6 debe ser honesto.
- Este es el código de golf. El código más corto gana.
Respuestas:
APL, 77
Necesidades
⎕IO←0
. Probado en Dyalog.Explicación
Ejemplos
fuente
≠
fuente que muta en una=
explicación.Python, 157
Ejemplo:
fuente
PowerShell:
192174Cambios del original:
Código de golf
Código sin golf con comentarios
fuente
Javascript,
221197Utiliza dos llamadas a Date.now () por aleatoriedad con un mensaje intermedio para garantizar un retraso. La entrada del usuario es un índice basado en 0 (la regla decía "lo que sea"). La siguiente alerta dice qué puerta se abrió. Aquí hay una versión un poco más larga que da la respuesta antes de que el usuario elija, para verificar que no haga trampa:
Violín: http://jsfiddle.net/acbabis/9J2kP/
EDITAR: Gracias Dave
fuente
(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
pasa la función,date.now()
pasa el resultado de la funciónPHP> = 5.4,
195192Salida:
fuente