Входной файл: - Выходной файл: - Время на тест: 1 секунда Тесты к задаче:Скачать Библиотека:Скачать Автор задачи: Метельский И.С.
"Быки и коровы" - логическая игра для двух игроков. Один из игроков загадывает четырехзначное число без нулей, все цифры которого различны. Второму игроку необходимо отгадать это число. Для этого второй игрок задает первому вопросы вида: "Сколько коров и быков в числе X?". Цифра в числе X называется быком, если в загаданном числе есть такая же цифра, и она стоит в нем на той же позиции, как и в числе X. Цифра в числе X называется коровой, если в загаданном числе есть такая же цифра, но она стоит в нем не на той позиции, на которой она стоит в числе X. Например, если загадано число 1234, то в числе 4235 будет 2 быка и 1 корова. Если для числа X известно, что в нем 4 быка и 0 коров, то это - загаданное число. Цель второго игрока - потратить на отгадывание как можно меньшее количество вопросов.
Задание.
Напишите программу, играющую в быки и коровы. В роли первого игрока будет выступать компьютер, который будет загадывать число и отвечать на вопросы вашей программы. Вторым игроком, отгадывающим задуманное число, выступает ваша программа. Для того, чтобы ваша программа могла задавать компьютеру вопросы и получать на них ответы, вам предлагается библиотека BowsCows.Tpu. Для того, чтобы подключить ее, включите в текст своей программы строку "uses BowsCows;". Для того, чтобы задать компьютеру вопрос, используйте процедуру Test (Num: LongInt; var BowsCount, CowsCount: LongInt). Первый ее параметр - число X, про которое вы спрашиваете, следующие два параметра - ответы на вопрос (количество быков и количество коров). Как только ваша программа отгадает число, ее работа будет автоматически остановлена.
Для тестирования своей программы создайте в текущей директории файл "Input.Txt", в который поместите загадываемое число. Библиотека создает файл "Output.Txt", в котором вы можете посмотреть, как играла ваша программа, отгадывая число, записанное в "Input.Txt". Содержимое файла "Output.Txt" можно использовать для улучшения вашей программы - уменьшения количества ходов, затрачиваемых на отгадывание. Кроме этого, вам предлагается пример программы, играющей в быки и коровы (Example.Pas). Данная программа играет корректно, но тратит на отгадывание очень большое количество ходов.
Замечания.
1. Ваша программа не должна читать данные из файлов и писать данные в файлы. При нарушении этого условия вы получите 0 баллов.
2. Оценка вашей программы будет производиться следующим образом: если ваша программа не смогла отгадать число или задала некорректный вопрос, то она получает 0 баллов за тест. В противном случае, если ваша программа отгадала число за p ходов, и A - полный балл за тест, то вы получите min{A, (8/p)2A} баллов. Все полученные вами баллы за тесты суммируются и результат округляется до ближайшего целого.