def setConfig(self, config): if len(config) > 10: print( "Error, number of pairs in configuration must be at most 10 paris" ) sys.exit(0) elif len(config) > 0 and len(config) <= 10: #checks if there are only 2 letters in each switch for pair in config: if len(pair) != 2: print("plugboard configuration isn't legal") sys.exit(0) #checks if each letter appear only once in the configuration for pair in config: for pair2 in config: if pair != pair2: if pair2.count(pair[0]) != 0 or pair2.count( pair[1]) != 0: print( "illegal plugboard configuration, each pair of letters must contain different letters" ) sys.exit(0) for pair in config: f_letter = pair[0] s_letter = pair[1] f_index = Translator.letterToindex(f_letter) s_index = Translator.letterToindex(s_letter) self.permutation[f_index] = s_letter self.permutation[s_index] = f_letter
def translation(self, letter): message = self.circularshift(self.offset - self.settings, letter) if self.dir == "FW": newmessage = self.permutation[Translator.letterToindex(message)] else: newmessage = self.reversepermutation[Translator.letterToindex( message)] return self.circularshift((self.settings - 1) - (self.offset - 1), newmessage)
def __init__(self, num, permutation, turnOverN): self.num = num self.permutation = permutation self.turnOverN = Translator.letterToindex(turnOverN) self.offset = 0 self.settings = 0 self.reversepermutation = [0] * self.alphabet_size self.reversetranslation()
def translation(self, letter): return self.permutation[Translator.letterToindex(letter)]