Загадки бумажных болот (НТО 24/25 :: ТБС)
Легенда
Главному герою фантастической игры Семёну не повезло - он застрял в бюрократической параллельной вселенной, в одной далёкой стране на альтернативной Земле. В этой стране для регулирования паролей в аккаунтах государственных сервисов используется особая директива – Перечень регламентов утверждения действительности информационной кодировки (ПРУДИК). Каждый государственный сервис каждому новому аккаунту предписывает набор правил ПРУДИКа, по которым пользователю нужно сочинить новый пароль и отправить его бумажной почтой. Чтобы попасть в родную вселенную, Семёну предстоит пройти чудовищное испытание – зарегистрироваться на всех онлайн-сервисах и подобрать к ним пароли, соответствующие поставленным правилам Перечня.
ПРУДИК состоит из пронумерованного набора правил. Каждое правило определяет ограничение на необходимый пароль:
- Пароль должен содержать не менее 5 символов.
- Пароль должен содержать арабские цифры.
- Пароль должен содержать заглавную букву английского алфавита.
- Пароль должен содержать один из специальных символов:
~!@#$%^&*
- Сумма всех арабских цифр в пароле должно равняться 25.
- Пароль должен содержать название месяца на английском языке с заглавной буквы.
- Сумма всех арабских и римских [1] чисел в пароле должна равняться 35.
- Пароль должен содержать римскую цифру.
- Перемножение всех римских чисел [1] в пароле должно равняться 35.
- Каждое слово [2] в пароле должно заканчиваться на
.py
. - Каждое слово должно содержать не более 7 символов.
- Пароль не должен содержать пробелов.
- Каждое слово должно начинаться с большой буквы.
- Пароль должен заканчиваться восклицательным знаком!
- Пароль должен начинаться с символа
$
. - Пароль является палиндромом (без учёта пробелов и регистра).
- Пароль содержит корректно расставленные скобки:
()[]{}<>
.
[1] Римские числа – это непрерывная последовательность римских цифр, приведённых в порядке невозрастания их мощности.
[2] Слово – это последовательность символов, разделённых одним и более пробелом.
Реализуйте бота, который выполняет проверку соответствия сообщений ПРУДИКу и подсказывает, подходит ли придуманный пароль к очередному сервису.
Это интерактивная задача, и это значит, что ваша программа взаимодействует с проверочной системой посредством стандартных потоков ввода и вывода. Иными словами, после отправки сообщения программа должна очистить буфер (выполнить flush) и считать ответ от системы (прочесть строку). В случае некорректного ответа, проверка прерывается с вердиктом PE
(Presentation Error).
В начале работы система отправляет сообщение и ждёт от вас ответа. Обработав завершающее сообщение, ваше решение должно штатно завершиться.
Формат получаемых сообщений:
* 1,2,3,4
– заявляет набор правил, которые необходимо проверять? проверь меня
– проверить сообщение на соответствие правилам. Сообщение рассматривается без вопросительного знака и пробела в начале.#
– закончить работу
Формат отправляемых сообщений:
NO 1,2,3,4
– ответ на проверку, если сообщение не соответствует правилам. Через запятую приводятся нарушенные правила в порядке возрастания номера.OK
– ответ на все остальные сообщения, в т.ч. на проверку в случае полного соответствия.
Ограничение времени | 1 секунда |
Ограничение памяти | 64Mb |
Ввод | стандартный ввод или input.txt |
Вывод | стандартный вывод или output.txt |
Для решения этой задачи у вас есть 20 попыток.