Testing Round 13 |
---|
Закончено |
Эта задача слегка необычна, она интерактивная. В ней вы должны реализовать взаимодействие с тестирующей системой. Это означает, что ваша программа может осуществлять запросы и получать ответы в режиме онлайн. Пожалуйста, используйте операции отчистки буфера вывода после вывода каждого вашего запроса. Например, в 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-цифренную секретную строку (все цифры должны быть различны).
Для того, чтобы читать ответы на запросы ваша программа должна использовать стандартный ввод.
Программа будет получать пары неотрицательных целых чисел, по одной паре в строке. Первое число в паре — количество быков, второе — коров. Если пришла пара "4 0", то ваша программа должна завершить исполнение.
Тестирующая система даст прочитать очередную пару только после записи в стандартный вывод соответствующего запроса (не забудьте после вывода запроса сделать flush).
Программа должна использовать стандартный вывод, чтобы осуществлять запросы.
Каждый запрос — это строка из 4 цифр. После вывода строки осуществите операцию flush. После вывода запроса программа должна прочитать результат из стандартного ввода.
Программа может сделать не более 50 запросов.
0 1
2 0
1 1
0 4
2 1
4 0
8000
0179
3159
3210
0112
0123
Секретная строка s в примере это «0123».
Название |
---|