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