решить на Python: Секретный шифр Вы подозреваете, что роботы что-то замышляют. Придётся прочесть их секретные сообщения. Шифр они придумали невероятно сложный: буква А заменяется на 🍉, буква Б — на 🍌 и так далее. «Несъедобные» буквы (например, Е) не заменяются. Список «съедобных» букв: АБВГДКЛМОПСТЯ. И их замены: 🍉🍌🍒🍐🍈🍓🍋🥕🥒🍅🥬🎃🍎. Расшифруйте и выведите все сообщения.
Пошаговое решение и объяснение
Цель: понять и реализовать дешифровку по заданной схеме замены.
Идея:
- Задано соответствие букв-«съедобных» букв и эмодзи. Чтобы расшифровать сообщение, нужно заменить каждый эмодзи на соответствующую букву, а остальные символы оставить без изменений.
- Составляем обратное отображение: эмодзи -> буква.
- Читаем входные строки до конца файла и для каждой строки заменяем каждый символ по обратному отображению.
Пояснение к алгоритму:
- edible = "АБВГДКЛМОПСТЯ"
- emojis = ["🍉","🍌","🍒","🍐","🍈","🍓","🍋","🥕","🥒","🍅","🥬","🎃","🍎"]
- Создаем словарь reverse_map: emoji -> соответствующая буква.
- Для каждой строки вводa: заменить каждый символ, если он встречается в reverse_map, иначе оставить без изменений.
- Выводим расшифрованную строку.
Пример:
Ввод: 🍉🍌🍒
Вывод: АБВ
Код на Python (работает с любыми строками до конца ввода, сохраняет остальные символы как есть):
import sys
def main():
edible = "АБВГДКЛМОПСТЯ"
emojis = ["🍉","🍌","🍒","🍐","🍈","🍓","🍋","🥕","🥒","🍅","🥬","🎃","🍎"]
# Обратное отображение: emoji -> буква
rev_map = {e: ch for ch, e in zip(edible, emojis)}
# Читаем весь ввод построчно
for line in sys.stdin:
line = line.rstrip('\n')
decoded = ''.join(rev_map.get(ch, ch) for ch in line)
print(decoded)
if __name__ == "__main__":
main()
Дополнительные замечания:
- Программа поддерживает любые символы в строке: если встретится эмодзи из набора, он заменится на соответствующую букву; идущие несъедобные буквы остаются без изменений.
- Если в входе встречаются другие эмодзи, не из набора, они будут оставлены без изменений. Это улучшает устойчивость к непредвиденным данным.