Задания в pythonchallenge.com: задание 1

После легкого начала нас ждёт первая серьёзная задачка.

«Подумай дважды прежде, чем решать» — гласит подсказка. Понятно, что картинка – это ключ,  а строку ниже нужно расшифровать.

К сожалению, подсказке я не внял и дважды не подумал. Первое предположение было в том, чтобы заменить три буквы «K» на «M», «O» на «Q» и «E» на «G». И конечно, это оказалось провальной идеей – получалась такая же белиберда. Потом я заметил закономерность того, что происходит сдвиг букв в алфавите: KLM, OPQ, EFG.

После такого открытия написать код не составило труда:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
s = """g fmnc wms bgblr rpylqjyrc gr zw fylb. rfyrq 
ufyr amknsrcpq ypc dmp. bmgle gr gl zw fylb gq glcddgagclr 
ylb rfyr'q ufw rfgq rcvr gq qm jmle. 
sqgle qrpgle.kyicrpylq() gq pcamkkclbcb. lmu ynnjw ml rfc spj. """
#генерируем словарь
#ключи - ASCII коды символов английского алфавита
#значения - сдвинутые на +2 ключи - коды для расшифровки
table = {}
for i in range(97, 123):
    table[i] = i + 2
table[121] = 97
table[122] = 98
 
print(s.translate(table))
#применям то, что было написано в расшифрованной инструкции
url = "map"
print(url.translate(table))
s = """g fmnc wms bgblr rpylqjyrc gr zw fylb. rfyrq 
ufyr amknsrcpq ypc dmp. bmgle gr gl zw fylb gq glcddgagclr 
ylb rfyr'q ufw rfgq rcvr gq qm jmle. 
sqgle qrpgle.kyicrpylq() gq pcamkkclbcb. lmu ynnjw ml rfc spj. """
#генерируем словарь
#ключи - ASCII коды символов английского алфавита
#значения - сдвинутые на +2 ключи - коды для расшифровки
table = {}
for i in range(97, 123):
	table[i] = i + 2
table[121] = 97
table[122] = 98

print(s.translate(table))
#применям то, что было написано в расшифрованной инструкции
url = "map"
print(url.translate(table))

Главная идея состоит в использовании функции translate(), которой в качестве аргумента передаётся словарь с ключом для перевода.

Получаем строку с дальнейшими инструкциями для перехода к следующей задаче.

Bookmark the permalink.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *