Já existe uma pergunta sobre a simulação do problema de Monty Hall . Este é diferente. O usuário vai jogar o problema de Monty Salão. Seu programa desempenhará o papel de host. Montybot, se quiser.
Aqui estão os passos:
- Escolha (aleatoriamente) qual das três portas oculta o prêmio.
- Saída de uma exibição visual de três portas. Um simples
ABC
servirá. Ou três quadrados. Como queiras. - Receba entrada escolhendo uma das portas. Pode ser um clique do mouse na porta escolhida, uma entrada de letra única (
B
) ou o que seja. - Abra outra porta. Você não abre a porta escolhida. Você não abre a porta escondendo o prêmio principal. Isso pode significar que você não tem escolha ou pode escolher duas. Se você tiver duas opções, escolha uma aleatoriamente. Indique visualmente que a porta foi aberta e que nenhum prêmio foi escondido atrás dela. Para um programa de entrada / saída baseado em texto, isso pode ser tão simples quanto a saída
AB0
, para mostrar que a portaC
foi aberta. Sinta-se livre para ser mais criativo. Se você estiver executando um programa GUI, sua escolha de exibição é com você. - Aceite a entrada do usuário. O usuário pode inserir
stick
ouswitch
(ou, para um programa GUI, clicar nos botões, ou usar uma entrada selecionada ou qualquer outra coisa). Se o usuário digitar algo diferente destick
ouswitch
, a implementação será indefinida. Faça o que você quiser. - Envie o texto
You won!
ouYou lost
. - Encerre o programa.
Regras:
- Quando você tiver que escolher algo aleatoriamente , não se preocupe com a aleatoriedade criptográfica. Qualquer
rand()
função serve. - O programa não deve trapacear. O prêmio deve estar no lugar antes do jogo começar. Ou seja, as etapas devem ser executadas na ordem indicada: primeiro escolha uma porta atrás da qual ocultar seu prêmio e peça ao jogador que escolha. A escolha de qual porta abrir na etapa 4 deve ocorrer na etapa 4: ela não é selecionada previamente.
- A saída na etapa 6 deve ser honesta.
- Isso é código de golfe. O menor código vence.
Respostas:
APL, 77
Necessidades
⎕IO←0
. Testado em Dyalog.Explicação
Exemplos
fonte
≠
na fonte que se transforma em um=
na explicação.Python, 157
Exemplo:
fonte
PowerShell:
192174Alterações do original:
Código de golfe
Código não golfe com comentários
fonte
Javascript,
221197Ele usa duas chamadas para Date.now () para aleatoriedade com um prompt no meio para garantir um atraso. A entrada do usuário é um índice baseado em 0 (a regra dizia "tanto faz"). O alerta a seguir indica qual porta foi aberta. Aqui está uma versão um pouco mais longa que fornece a resposta antes que o usuário escolha, para verificar se ele não trapaceia:
Fiddle: http://jsfiddle.net/acbabis/9J2kP/
EDIT: Obrigado dave
fonte
(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
passa a função,date.now()
passa o resultado da funçãoPHP> = 5,4,
195192Resultado:
fonte