четверг, 21 ноября 2024 г.

Быки и Коровы

Если кто не знает игры "Быки и Коровы", то вот статья в Википедии. Тут сегодня возник вопрос, насколько игра станет сложнее, если загадывающему игроку будет позволено менять загаданное число в процессе игры, но так, чтобы не было противоречия с ранее данными им ответами. Скрипт ниже это реализует по самой простейшей стратегии: после каждого хода угадывающего игрока он выбирает такой ответ, чтобы он подходил к максимальному числу вариантов загаданного числа. Поиграв немного с этим алгоритмом, можно заметить несколько интересных моментов:
  • После первого хода он всегда даёт одну корову.
  • Если во втором ходе не использовать цифры первого хода, то он даст две коровы.
  • Если во втором ходе использовать ровно одну цифру первого хода, то он даст одну корову.
Любопытно, конечно, найти наименьшее возможное число попыток при худшем варианте и оптимальную стратегию.


Upd: прикрутил ещё вторую часть алгоритма, которая предлагает свой вариант угадывающему (это предложение показывается прямо в поле ввода). Главный вопрос, конечно, всегда ли можно за семь ходов угадать.
Upd2: Исправил баг и разрешил второй части проверять и противоречивые комбинации. Теперь, кажется, угадывается всегда за 7 ходов.