Spaces:
Runtime error
Runtime error
| # CREDIT: generated by GPT-4 | |
| import string | |
| class EnigmaMachine: | |
| def __init__(self, rotor_settings): | |
| self.alphabet = string.ascii_uppercase | |
| self.rotors = [list(self.alphabet) for _ in range(3)] # Create 3 rotors | |
| self.reflector = list(self.alphabet) # Create reflector | |
| # Initialize rotors based on the given rotor settings | |
| for i, setting in enumerate(rotor_settings): | |
| self.rotate_rotor(i, setting) | |
| def rotate_rotor(self, rotor_index, positions): | |
| # Rotate the specified rotor by the given number of positions | |
| self.rotors[rotor_index] = self.rotors[rotor_index][positions:] + self.rotors[rotor_index][:positions] | |
| def encode_character(self, char): | |
| # For simplicity, this method only encodes a character (not full encoding process) | |
| index = self.alphabet.index(char) | |
| # Pass through rotors | |
| for rotor in self.rotors: | |
| index = self.alphabet.index(rotor[index]) | |
| # Pass through reflector | |
| reflected = self.reflector[index] | |
| # Inverse pass through rotors | |
| # for rotor in reversed(self.rotors): | |
| # index = rotor.index(reflected) | |
| # reflected = self.alphabet[index] | |
| return reflected | |
| def encode_message(self, message): | |
| encoded = '' | |
| for char in message: | |
| if char.upper() in self.alphabet: | |
| # Rotate the first rotor by 1 for each character | |
| self.rotate_rotor(0, 1) | |
| encoded += self.encode_character(char.upper()) | |
| else: | |
| encoded += char # For non-alphabetic characters, we keep the original | |
| return encoded | |
| # Using the enigma machine to encode a message | |
| rotor_settings = [0, 0, 0] # Starting positions for the rotors | |
| enigma = EnigmaMachine(rotor_settings) | |
| original_message = "HELLO" | |
| encoded_message = enigma.encode_message(original_message) | |
| # print(f"Original: {original_message}") | |
| # print(f"Encoded: {encoded_message}") | |