Как преобразовать несколько чисел в отдельные буквы, чтобы создать фразу из книги - PullRequest
0 голосов
/ 23 апреля 2020

Мне дали задание декодировать список чисел. Первоначальный текст был взят и преобразован в буквенно-цифровой эквивалент ASCII. Например, «T» → 84. Каждое из этих числовых значений было зашифровано, проведя их через этот процесс: зашифрованное значение = a X (исходное значение) + b . Первые два целых числа в файле являются значениями a и b; остальные целые числа представляют зашифрованный текст.

Например, ваше шифрование может выглядеть следующим образом:

 -4, -63, -355, -191, -479, -507, -511, -467, -191, -547, -507, -531, -191, -479, -451, -535, -467, -191, -475, -507, -507, -463, -191, -539, -467, -451, -527, -479, -467, -519, -191, -539, -479, -483, -495, -467, -191, -355, -191, -451, -499, -191, -475, -507, -503, -467, -247

Следовательно, a = -4 и b = -63. Каждое целое число после этого является зашифрованным письмом.

Чтобы выяснить, что равняется вам -355, вам нужно -> (355 - 63) / 4 = 73 73 в таблице ASCII - это "I"

Теперь мне просто нужно выяснить код, который будет принимать все числа, перечисленные выше, и заставлять его выплевывать каждую букву за буквой, пока не будет сформирован отрывок.

Пожалуйста, помогите мне

1 Ответ

0 голосов
/ 24 апреля 2020

Попробуйте:

lst = [4, 63, 355, 191, 479, 507, 511, 467, 191, 547, 507, 531, 191, 479, 451, 535, 467, 191, 475, 507, 507, 463, 191, 539, 467, 451, 527, 479, 467, 519, 191, 539, 479, 483, 495, 467, 191, 355, 191, 451, 499, 191, 475, 507, 503, 467, 247]
a, b = lst[:2]
ans = ''.join([chr((abs(val) - b)//a) for val in lst[2:]])
print(ans)

Вывод:

I hope you have good weather while I am gone.

Шифрование:

enc = [(a * ord(char)) + b for char in ans]
#[355, 191, 479, 507, 511, 467, 191, 547, 507, 531, 191, 479, 451, 535, 467, 191, 475, 507, 507, 463, 191, 539, 467, 451, 527, 479, 467, 519, 191, 539, 479, 483, 495, 467, 191, 355, 191, 451, 499, 191, 475, 507, 503, 467, 247]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...