Быки и коровы против компьютера

Быки и коровы онлайн: дуэль на дедукцию с компьютером. Отгадайте его число раньше, чем он отгадает ваше. Бесплатно, без регистрации, в браузере.

Что это за игра

Быки и коровы — это гонка двух шифровальщиков. Каждый загадал четыре разные цифры, и оба одновременно пытаются вскрыть чужой код раньше, чем вскроют их собственный.

Всего таких кодов ровно 5040. Кажется, что это много, но правильно заданный вопрос отсекает сразу большую их часть: каждый ответ «столько-то быков, столько-то коров» делит оставшееся множество на группы, и вам достаётся ровно одна. Хорошо сыгранная партия — это пять-шесть ходов, плохо сыгранная тянется вдвое дольше.

Правила

Как играть лучше

Немного истории

Быки и коровы — игра на бумаге, и она заметно старше своего самого известного потомка. В неё играли задолго до того, как её механику выпустили в коробке.

Коробка появилась в 1970 году: Mastermind, придуманный Мордехаем Мейровичем, заменил цифры цветными колышками, а быков и коров — чёрными и белыми штырьками. Игра разошлась миллионами экземпляров и заодно превратилась в задачу, которую всерьёз изучали математики.

В середине 1970-х Дональд Кнут опубликовал работу «The Computer as Master Mind» с алгоритмом, который вскрывает Mastermind не более чем за пять ходов. Идея простая и сильная: на каждом ходу перебрать все возможные догадки, для каждой посмотреть, на сколько групп она делит оставшиеся варианты, и выбрать ту, у которой самая большая группа наименьшая. То есть готовиться к худшему ответу. Именно этот приём работает здесь на уровне «Эксперт».

Эта версия сделана по мотивам апплета, который работал на сайте с 2005 года, и сохраняет его главную особенность: это не угадывание в одну сторону, а дуэль. Компьютер взламывает ваш код теми же ходами, которыми вы взламываете его, и право первого хода решает ничьи в вашу пользу.

Про уровни

Уровень определяет ровно одно: насколько умно компьютер сужает множество кодов, ещё совместимых со всеми полученными ответами. Отсеивать несовместимое он умеет на всех трёх — разница в том, что он делает с остатком.

Простой берёт из совместимых кодов случайный. Он никогда не назовёт заведомо невозможную комбинацию, но и выбирать среди возможных не пытается.

Сложный выбирает догадку, которая в среднем оставит меньше всего вариантов: для каждого кандидата он раскладывает остаток по группам ответов и берёт того, у кого сумма квадратов размеров групп минимальна. Смотрит он при этом только на сами возможные коды, и если их слишком много для бюджета в миллион пар за ход, берёт случайную выборку.

Эксперт играет по Кнуту: оценивает догадку не по среднему, а по худшему случаю — по самой большой группе — и выбирает ту, где худший случай наименьший. Бюджет у него в восемь раз больше, поэтому он проверяет не только возможные коды, но и «зондирующие» комбинации, которые сами кодом быть уже не могут, зато делят остаток лучше. При равном счёте он предпочтёт догадку, которая ещё может оказаться кодом, — вдруг повезёт выиграть сразу.

Первый ход у всех трёх уровней случайный, и это не поблажка: пока ни одного ответа не получено, выбирать действительно не из чего.

Куда отсюда