Продолжаем публикацию задач предыдущего тура.
------------
В задаче произошли следующие изменения. Добавлен пример в задачу
первого тура и уточнён блеф.
Девятизначные быки и коровы
В "Быки и коровы" играют вдвоём. Первый игрок загадывает число, второй
игрок его отгадывает. Для уточнения числа второй записывает число, а
первый говорит, сколько в нем быков, а сколько коров. Такое уточнение
называется ходом. Быком называется цифра числа, которая стоит на том
же месте, что и в загаданном числе и совпадает с ним по значению.
Коровой называется цифра числа, которая есть в загаданном числе, но не
является быком.
Второй игрок записывает число. В ответ первый записывает, сколько в
этом числе быков и сколько коров.
Цель игры
Определить за наименьшее количество ходов загаданное число.
Варианты
Можно договариваться о разном количестве цифр в числе. Интересные
варианты начинаются с 4.
Задача
Написать программы для первого и для второго игрока отдельно. Цифры
будут десятичные от 0 до 9 и их количество в числе ровно 9. Цифры в
числе могут быть одинаковыми. Назовём программу для первого игрока
загадыватель, а для второго -- отгадыватель.
Техническое здание
Программы общаются через файл numbers.txt. Обе программы имеют право
только дописывать этот файл. Т.е. все предыдущие строки нужно
сохранять. В файле numbers.txt заполняется так:
В первой строке загадыватель записывает десятичное число из 20-ти
знаков. В нем закодировано загаданное число. В следующей строке
отгадыватель записывает девятизначное число (если нужно дополнив
незначащими нулями). В третьей строке загадыватель обязан написать
двухзначное число. Первая цифра -- количество быков, вторая цифра --
количество коров в числе, написанном в предыдущей строке.
Игра продолжается до момента пока загадывающий не напишет 90 (9 быков
0 коров). Время на ход -- 1 секунда. Если игра достигла 100 ходов,
отгадывающему записывается поражение.
Пример number.txt после окончания игры
00112233445566778899
123456789
04
000000001
45
123404321
09
010203040
27
000011234
90
Оценка задачи
Между программами будет устроен турнир. Можно получить до 100 баллов.
Блеф
Эта задача предполагает блеф. Загадывателю разрешается менять
загаданное число в во время игры, сообщать не верное количество быков
и коров Но отгадыватель может потребовать проверку. Для этого нужно
записать не девятизначное число, а -1. И если он окажется прав, то ему
будет засчитан выигрыш за 1 ход. Если проверяющая программа не найдет
обман, то отгадывателю записывается проигрыш.
Отгадыватель, в свою очередь, может пытаться раскодировать число из
первой строки.
Все остальные жульничества запрещаются и за них программа может быть
снята с соревнований.
Командный вариант
Эту задачу можно решать не только одному. Вы можете собрать команду до
4 человек. Команда более чем из одного человека получит поощрительные
очки. 2 человека -- 10 баллов, 3 человека -- 15 баллов, 4 человека --
20 баллов.
Автор задачи: В.В.Пупышев
Последний день решения задачи - 15 апреля 2002 года.
Последний день задавать вопросы по условию задачи - 10 апреля 2002 года.