Conversation
salamantos
left a comment
There was a problem hiding this comment.
все супер, за подробное описание отдельный лайк)
| 3. Находим букву с наибольшей частотой (например "г") | ||
| 4. Априорно считаем эту букву буквой "о" (или "e", в зависимости от языка) | ||
| 5. Зная местоположения в алфавите букв "о" и "г" определяем сдвиг | ||
| 6. Расшифровываем текст, используя полученный ключ |
| alphabet_EU = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' | ||
| alphabet_RU = 'АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ' | ||
|
|
||
| def Caesar_cipher(input_file): |
There was a problem hiding this comment.
функции должны быть в snake_case
| index = i + 1 | ||
| text_ind = p | ||
| if lang == "RU": | ||
| shift = abs(16 - index) |
There was a problem hiding this comment.
по коду сложно понять, что 16, 5 - это индексы определенных букв в алфавите, возможно лучше ord('о') использовать
| outf.write(new_byte) | ||
| byte_in = inf.read(1) | ||
|
|
||
| def Caesar_analysis(input_file): |
There was a problem hiding this comment.
кажется не очень надежным смотреть только на 1 символ и считать его самым часто повторяющимся, потому что от текста к тексту это может быть не о
лучше смотреть на частоту всех символов: посчитать частоту всех символов в языке, затем в исходном тексте найти для каждого символа наиболее близкое предсказание по частоте, после этого посмотреть на все полученные сдвиги и взять 1 самый частый
| @click.command() | ||
| @click.option("--cipher", type=str, | ||
| help="Use one of: Caesar_cipher, Caesar_decipher, Vigenere_cipher, Vigenere_decipher, Vernam_cipher, Vernam_decipher, Caesar_analysis") | ||
| @click.option("--input_file", type=click.Path(exists=True, file_okay=True), required=True, |
There was a problem hiding this comment.
возможно удобнее было бы дополнительно поддержать короткую версию вроде -i, чтобы не писать длинные команды)
| @@ -0,0 +1,286 @@ | |||
| #!/usr/bin/env python3 | |||
There was a problem hiding this comment.
давай разобьем этот большой файл на несколько поменьше: например каждый шифр можно в свой файл положить
так должно стать легче читать код и понимать структуру проекта)
No description provided.