Ложное чувство безопасности
Фредди открыл новый способ выращивания значительно более крупных цветных капуст и хочет поделиться этим открытием со своим коллегой-садоводом Томми. Однако, чтобы никто не украл его метод, они решили использовать простую технику шифрования, предложенную М. Е. Охавером.
Шифрование основано на азбуке Морзе, где символы представлены последовательностями точек и тире разной длины. В таблице ниже приведены последовательности азбуки Морзе для всех букв:
Обратите внимание, что четыре возможные комбинации точек и тире не назначены. Для целей этой задачи мы назначим их следующим образом (это не соответствует фактической азбуке Морзе):
На практике символы в сообщении разделяются короткими паузами, обычно обозначаемыми пробелами. Таким образом, сообщение ACM GREATER NY REGION кодируется как:
.- -.-. – ..– –. .-. . .- - . .-. ..– -. -.– ..– .-. . –. .. — -.
Схема шифрования Охавера основана на изменении азбуки Морзе, а именно на удалении пауз между буквами. Поскольку паузы необходимы (потому что Морзе — это кодирование переменной длины, которое не является префиксно-свободным), добавляется строка, указывающая количество точек и тире в каждом символе. Например, рассмотрим сообщение ".–.-.–". Без знания, где должны быть паузы, это может быть "ACM", "ANK" или несколько других вариантов. Если мы добавим информацию о длине, такую как ".–.-.– 242", то код становится однозначным.
Схема Охавера включает три шага, одинаковых для шифрования и дешифрования:
Преобразуйте текст в азбуку Морзе без пауз, но с добавлением строки чисел для указания длины кода.
Переверните строку чисел.
Преобразуйте точки и тире обратно в текст, используя перевернутую строку чисел как длины кода.
Например, рассмотрим зашифрованное сообщение "AKADTOF IBOETATUK IJN". Преобразование в азбуку Морзе с добавлением строки длины дает:
.–.-.–..—-..-...–..-...—.-.–..–.-..–...—-. 232313442431121334242
Перевернув числа и декодируя, мы получаем исходное сообщение "ACM GREATER NY REGION".
Хотя безопасность этой схемы кодирования не слишком высока, Фредди считает, что этого достаточно для его целей. Поможете ли вы Фредди реализовать этот алгоритм кодирования и защитить его конфиденциальную информацию?
Входные данные
Входные данные состоят из нескольких сообщений, закодированных по алгоритму Охавера, каждое из которых находится на отдельной строке. Каждое сообщение будет содержать только двадцать шесть заглавных букв, подчеркивания, запятые, точки и вопросительные знаки. Сообщения не будут превышать 1000 символов в длину.
Выходные данные
Для каждого сообщения на входе выведите декодированное сообщение на отдельной строке.