Задачи заочного тура личного первенства 1998
1. Сейф Карбофоса
Ограничения: время – 1s/2s, память – 32MiB Ввод: input.txt или стандартный ввод Вывод: output.txt или стандартный вывод
Послать решение Blockly Посылки Темы Где Обсудить (0)
В игре "Братья Пилоты" для выхода из комнаты Карбофоса
необходимо открыть сейф странной конструкции. На дверце сейфа
квадратом 4x4 расположены шестнадцать ручек, которые могут
находиться только в горизонтальном и вертикальном положении. При
повороте ручки на 90 градусов одновременно с ней поворачиваются
ручки, расположенные в той же самой горизонтали и вертикали, что и
поворачиваемая ручка. Например, при повороте ручки во 2 ряду 3
столбце получим следующий результат:
до после
||-- |||-
|--| -||-
---| --||
|||- ||--
Для того чтобы открыть сейф, нужно чтобы все ручки приняли
горизонтальное положение.
Входной файл содержит в первой строке число `N`
(`1\ ≤\ N\ ≤\ 20`) – количество наборов данных, далее следует `N` наборов
(начальных комбинаций), разделенных пустой строкой, каждый набор
представляет собой 4 строки по 4 символа | или - (начальное
состояние ручек).
В выходной файл для каждого набора, если сейф можно
открыть, вывести YES и через пробел минимальное число ручек,
поворачиваваемых для открытия сейфа, или NO в противном случае.
Пример ввода
2
--|-
||||
--|-
--|-
--||
----
----
----
Пример вывода
YES 1
YES 6
2. Китайская грамота
Ограничения: время – 1s/2s, память – 32MiB Ввод: input.txt или стандартный ввод Вывод: output.txt или стандартный вывод
Послать решение Blockly Посылки Темы Где Обсудить (0)
Многие языки (китайский, японский и даже русский) содержат
большое число букв в алфавите, для которых нет прямых соответствий
в латинском алфавите. При передаче электронных писем может быть
потеряна или искажена любая информация с кодами вне диапазона
32-127 (пробел, цифры, латинский алфавит, пунктуация, а также
символы CR и LF). Тексты, содержащие другие символы, должны
кодироваться (UUencode, BASE64 или др. способом) при передаче и
декодироваться при получении. Для облегчения работы с короткими
текстами, а также при работе с компьютерами, на которых не
установлены необходимые шрифты, можно использовать мнемоническую
кодировку, заменяя буквы или сочетания букв похожими по
произношению сочетаниями латинских букв. Для человека процесс
кодирования-декодирования достаточно легок.
Требуется написать программу, декодирующую текст письма, чтобы
его можно было распечатать или вставить в документ.
Входной файл содержит в первой строке число `N`
(`1\ ≤\ N\ ≤\ 250`) – количество кодов, далее следует `N` строк
вида: исх.код пробел рез.код, например, я ya.
Исходный код и результирующий
код содержат от 1 до 4 символов без пробелов. Для результирующего
кода используются только буквы латинского алфавита a-z, регистр не
имеет значения. Далее идет текст письма: от 1 до 10 строк не более
80 символов в строке.
Выходной файл должен содержать декодированный текст
письма. Все знаки препинания (символы, не являющиеся буквами
A-Za-z) должны сохраниться. Если слово можно интерпретировать
разными способами, выбирается интерпретация, содержащая наименьшее
количество кодов. Например: пусть заданы коды
{бу bu, р r, я ya, й y, а а},
тогда текст burya можно интерпретировать как буря (3 кода) и бурйа (4
кода). Выбирается первая интерпретация. Если две интерпретации
имеют одинаковое число кодов, то выбирается комбинация, коды
которой стоят раньше в списке кодов.
Пример ввода
8
м m
a a
ы iq
л L
р r
у u
я ya
й y
Mama miqla ramu. Lara riqla yamu.
Пример вывода
мама мыла раму. лара рыла яму.
3. Выжимание воды
Ограничения: время – 500ms/1000ms, память – 32MiB Ввод: input.txt или стандартный ввод Вывод: output.txt или стандартный вывод
Послать решение Blockly Посылки Темы Где Обсудить (0)
Для уменьшения количества "воды" в текстах можно либо научиться
писать кратко, либо просто сжимать получивщиеся тексты.
Естественно, для программиста легче использовать второй путь.
Напишите программу, сжимающую текст. Словом будем называть
последовательность прописных и строчных латинских букв (до 50
символов). Регистр букв игнорируется.
x-ray состоит из 2 слов X и RAY
Mary's состоит из 2 слов MARY и S
It's words состоит из 3 слов IT, S и WORDS
Повторяющееся слово будем заменять символом # и номером его
последнего вхождения, отсчитываемым от текущего слова. Если слово
достаточно коротко (при замене не происходит уменьшения текста), то
замену не делаем. Знаки препинания, разделение на строки, остается
как в исходном тексте.
Входной файл содержит текст для сжатия (от 1 до 50
строк, не более 80 символов в строке, не более 200 слов в тексте).
Выходной файл должен содержать получившийся сжатый
текст.
Пример ввода
Dear Sally,
Please, please do it--it would please
Mary very, very much. And Mary would
do everything in Mary's power to make
it pay off for you.
-- Thank you very much--
Пример вывода
Dear Sally,
Please, #1 do it--it would #5
Mary very, #1 much. And #5 #8
do everything in #5's power to make
it pay off for you.
-- Thank #2 #20 #20--