Эта задача слегка необычна, она интерактивная. В ней вы должны реализовать взаимодействие с тестирующей системой. Это означает, что ваша программа может осуществлять запросы и получать ответы в режиме онлайн. Пожалуйста, используйте операции отчистки буфера вывода после вывода каждого вашего запроса. Например, в C++ можно использовать fflush(stdout), в Java вызов System.out.flush(), а в Pascal — flush(output).
«Быки и коровы» — это логическая игра для двух игроков, вариация коммерческой настольной игры Mastermind.
Первый игрок загадывает секретную строку, которая состоит из 4 различных цифр. Строка может начинаться с 0.
Затем второй игрок отгадывает загаданную секретную строку, делая попытки. Каждая попытка — это строка из четырех цифр. Если совпадение произошло и в позиции и по значению, то говорят, что встретился «бык», а если совпадение произошло по значению, но не по позиции, то встретилась «корова». Попытка может содержать одинаковые цифры.
Формально, допустим секретная строка это s, а попытка — это строка x. Тогда количество быков равно количеству таких позиций i (1 ≤ i ≤ 4), что s[i] = x[i]. Количество коров — это количество таких цифр c, что s содержит c в позиции i (то есть s[i] = c), x содержит c, но x[i] ≠ c.
Например, если секретная строка это «0427», а попытка второго игрока это «0724», то результат это 2 быка и 2 коровы (быки это "0" и "2", а коровы это "4" и "7"). Если секретная строка это «0123», а попытка второго игрока равна «0330», тогда результат это 1 бык и 1 корова.
В этой задаче вам надо отгадать секретную строку s, которая была загадана тестирующей системой. Загаданная строка состоит из 4 цифр, все цифры в ней различны.
Вы можете делать попытки, посылая строки из 4 цифр (не обязательно различных). Результатом на запрос является количество быков и коров. Если ответ системы равен "4 0", то значит вы отгадали секретную строку и ваша программа должна завершить своё исполнение обычным образом. Кроме того, в вашу программу будет отправлено "4 0", если вы слелали некорректный ход. В этом случае программу также надо завершить обычным образом, а вердикт на этот тест будет «неправильный ответ».
Ваша программа должна совершить не более 50 запросов.
Вы можете взламывать решения других участников, задавая 4-цифренную секретную строку (все цифры должны быть различны).