Skip to content

Commit b475c28

Browse files
committed
fixed all errors in rotor_f, rotor_b, create_rotors, create_reflector, etc. :)))
1 parent f421534 commit b475c28

File tree

1 file changed

+12
-14
lines changed

1 file changed

+12
-14
lines changed

Yenigma/yenigma.py

Lines changed: 12 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ def create_rotors(self, keys: Union[tuple, list], ):
2525

2626
for ring in range(len(keys[0])):
2727
self.create_rotor(ring, keys[0][ring])
28+
self.create_reflector(keys[1])
2829

2930
def create_rotor(self, ring, key):
3031
self.randomish.set_seed(key)
@@ -44,15 +45,13 @@ def create_reflector(self, key):
4445
temp_reflector = dict()
4546
temp_char = list(self.ring_chars)
4647
while len(temp_char):
47-
a = self.randomish.random_int(len(temp_char))
48-
b = self.randomish.random_int(len(temp_char))
48+
rand = (self.randomish.random_int(len(temp_char)), self.randomish.random_int(len(temp_char)))
49+
a, b = min(rand), max(rand)
4950
temp_reflector[temp_char[a]] = temp_char[b]
5051
temp_reflector[temp_char[b]] = temp_char[a]
5152
del temp_char[a]
52-
try:
53-
del temp_char[b]
54-
except IndexError:
55-
pass
53+
if a != b:
54+
del temp_char[b-1]
5655
self.reflector = temp_reflector
5756

5857
return
@@ -76,16 +75,15 @@ def rotor_start(self, keys: Union[list, tuple]):
7675
self.rotate(rotor, quantity=keys[rotor])
7776
self.add_rotation(rotor, keys[rotor])
7877

79-
def rotor_f(self, char, ring): # PROBLEM IS HERE
80-
loc = self.ring_chars.find(char)
81-
if loc == -1:
82-
return
78+
def rotor_f(self, char, ring):
79+
if char in self.ring_chars:
80+
return self.rotors[ring][self.ring_chars.index(char)]
8381
else:
84-
return self.rotors[ring][loc]
82+
return
8583

86-
def rotor_b(self, char, ring): # PROBLEM IS HERE
84+
def rotor_b(self, char, ring):
8785
if char in self.ring_chars:
88-
return self.rotors[ring][self.ring_chars.index(char)]
86+
return self.ring_chars[self.rotors[ring].index(char)]
8987
else:
9088
return
9189

@@ -145,7 +143,7 @@ def crypt(self, text, enc=True):
145143
if __name__ == '__main__':
146144
yenigma = Yenigma()
147145
yenigma.create_rotors(((1, 2, 3), 1))
148-
print(yenigma.crypt("pleasework"))
146+
print(yenigma.crypt("qefqfrshmu"))
149147
while True:
150148
try:
151149
print(eval(input()))

0 commit comments

Comments
 (0)