Уже был вопрос об имитации проблемы Монти Холла . Этот другой. Пользователь будет играть на Монти Холла проблемы. Ваша программа сыграет роль ведущего. Монтибот, если хочешь.
Вот шаги:
- Выберите (случайным образом), какая из трех дверей скрывает приз.
- Выведите визуальный дисплей трех дверей. Простое
ABC
подойдет. Или три квадрата. Или что угодно. - Получите вход, выбрав одну из дверей. Это может быть щелчок мышью на выбранной двери или ввод одной буквы (
B
) или что-то еще. - Откройте другую дверь. Вы не открываете выбранную дверь. Вы не открываете дверь, скрывая главный приз. Это может означать, что у вас нет выбора, или это может означать, что у вас есть выбор из двух. Если у вас есть выбор из двух, выберите один наугад. Визуально укажите, что дверь была открыта и за ней не было спрятано ни одного приза. Для программного ввода / вывода на основе текста это может быть так же просто, как вывод
AB0
, чтобы показать, что дверьC
была открыта. Не стесняйтесь быть более изобретательным. Если вы делаете программу с графическим интерфейсом, ваш выбор дисплея остается за вами. - Принять ввод от пользователя. Пользователь может вводить
stick
илиswitch
(или, для программы с графическим интерфейсом, нажимать на кнопки, или использовать выборочный ввод, или что-то еще). Если пользователь вводит что-либо кромеstick
илиswitch
, реализация не определена. Делай что хочешь. - Вывести текст
You won!
илиYou lost
. - Прекратить программу.
Правила:
- Когда вам нужно что-то выбрать случайно , не беспокойтесь о случайной криптографии. Подойдет любая
rand()
функция. - Программа не должна обманывать. Приз должен быть на месте до начала игры. То есть, шаги должны быть выполнены в указанном порядке: сначала выберите дверь, за которой нужно спрятать свой приз, затем попросите игрока выбрать. Выбор, какую дверь открыть на шаге 4, должен произойти на шаге 4: она не выбрана заранее.
- Вывод на шаге 6 должен быть честным.
- Это код гольф. Самый короткий код выигрывает.
Ответы:
APL, 77
Потребности
⎕IO←0
. Проверено на Dyalog.объяснение
Примеры
источник
≠
в источнике есть мутирование=
в объяснение.Питон, 157
Пример:
источник
PowerShell:
192174Отличия от оригинала:
Гольф-код
Un-Golfed код с комментариями
источник
Javascript,
221197Он использует два вызова Date.now () для случайности с подсказкой между ними, чтобы гарантировать задержку. Пользовательский ввод - это индекс на основе 0 (правило говорило «что угодно»). Следующее предупреждение говорит, какая дверь была открыта. Вот немного более длинная версия, которая дает ответ до того, как пользователь выберет, чтобы убедиться, что он не обманывает:
Скрипка: http://jsfiddle.net/acbabis/9J2kP/
РЕДАКТИРОВАТЬ: Спасибо, Дейв
источник
(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
передает функцию,date.now()
передает результат функцииPHP> = 5,4,
195192Выход:
источник