Уже был вопрос об имитации проблемы Монти Холла . Этот другой. Пользователь будет играть на Монти Холла проблемы. Ваша программа сыграет роль ведущего. Монтибот, если хочешь.
Вот шаги:
- Выберите (случайным образом), какая из трех дверей скрывает приз.
- Выведите визуальный дисплей трех дверей. Простое
ABCподойдет. Или три квадрата. Или что угодно. - Получите вход, выбрав одну из дверей. Это может быть щелчок мышью на выбранной двери или ввод одной буквы (
B) или что-то еще. - Откройте другую дверь. Вы не открываете выбранную дверь. Вы не открываете дверь, скрывая главный приз. Это может означать, что у вас нет выбора, или это может означать, что у вас есть выбор из двух. Если у вас есть выбор из двух, выберите один наугад. Визуально укажите, что дверь была открыта и за ней не было спрятано ни одного приза. Для программного ввода / вывода на основе текста это может быть так же просто, как вывод
AB0, чтобы показать, что дверьCбыла открыта. Не стесняйтесь быть более изобретательным. Если вы делаете программу с графическим интерфейсом, ваш выбор дисплея остается за вами. - Принять ввод от пользователя. Пользователь может вводить
stickилиswitch(или, для программы с графическим интерфейсом, нажимать на кнопки, или использовать выборочный ввод, или что-то еще). Если пользователь вводит что-либо кромеstickилиswitch, реализация не определена. Делай что хочешь. - Вывести текст
You won!илиYou lost. - Прекратить программу.
Правила:
- Когда вам нужно что-то выбрать случайно , не беспокойтесь о случайной криптографии. Подойдет любая
rand()функция. - Программа не должна обманывать. Приз должен быть на месте до начала игры. То есть, шаги должны быть выполнены в указанном порядке: сначала выберите дверь, за которой нужно спрятать свой приз, затем попросите игрока выбрать. Выбор, какую дверь открыть на шаге 4, должен произойти на шаге 4: она не выбрана заранее.
- Вывод на шаге 6 должен быть честным.
- Это код гольф. Самый короткий код выигрывает.