Условие:
Запрограммируйте статичную машину.
Напишите функцию, которая шифрует одну букву на «Энигме» без учёта движения роторов.
Ваша функция должна симулировать полный путь сигнала: коммутационная панель —► 3 ротора (вперёд) —► рефлектор —► 3 ротора (назад) —► коммутационная панель.
При движении сигнала вдоль ротора назад входная строка — строка ротора, выходная — строка алфавита. При движении сигнала вдоль ротора вперёд — наоборот.
Строка рефлектора соответствует строке алфавита.
Константы:
Роторы:\nROTOR_I = "EKMFLGDQVZNTOWYHXUSPAIBRCJ"\nROTOR_II = "AJDKSIRUXBLHWTMCQGZNPYFVOE"\nROTOR_III = "BDFHJLCPRTXVZNYEIWGAKMUSQO"
Рефлектор:\nREFLECTOR_B = "YRUHQSLDPXNGOKMIEBFZCWVJAT"
\nALPHABET = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"\nROTOR_I = "EKMFLGDQVZNTOWYHXUSPAIBRCJ"\nROTOR_II = "AJDKSIRUXBLHWTMCQGZNPYFVOE"\nROTOR_III = "BDFHJLCPRTXVZNYEIWGAKMUSQO"\nREFLECTOR_B = "YRUHQSLDPXNGOKMIEBFZCWVJAT"
\ndef encrypt_single_char(char, rotor_order, rotor_positions, plugboard_pairs):
# rotor_order — порядок роторов в формате (ROTOR_I, ROTOR_III, ROTOR_II)
# rotor_positions — позиции роторов в формате ('F', 'U', 'N')
# plugboard_pairs — коммутационная панель в формате {'Q':'Z','Z': 'Q',...}
# 1. Коммутационная панель (вход)
# 2. X__ Левый ротор
# 3. _X_ Средний ротор
# 4. __X Правый ротор
# 5. Рефлектор
# 6. __X Правый ротор (обратно)
# 7. _X_ Средний ротор (обратно)
# 8. X__ Левый ротор (обратно)
# 9. Коммутационная панель (выход)
return char

