task3 #2
@ -4,15 +4,39 @@ class VigenereCipher(object):
|
||||
self.alphabet = alphabet
|
||||
|
||||
def encode(self, text):
|
||||
idx_key = [self.alphabet.index(x) for x in self.key]
|
||||
idx_text = [self.alphabet.index(x) for x in text]
|
||||
pos_enc = [sum(x) % len(self.alphabet) for x in zip(idx_key, idx_text)]
|
||||
return "".join([self.alphabet[x] for x in pos_enc])
|
||||
encoded = []
|
||||
idx_key = 0
|
||||
|
||||
for char in text:
|
||||
if char in self.alphabet:
|
||||
text_pos = self.alphabet.index(char)
|
||||
key_char = self.key[idx_key % len(self.key)]
|
||||
key_pos = self.alphabet.index(key_char)
|
||||
|
||||
pos = (text_pos + key_pos) % len(self.alphabet)
|
||||
encoded.append(self.alphabet[pos])
|
||||
|
||||
idx_key += 1
|
||||
else:
|
||||
encoded.append(char)
|
||||
|
||||
return "".join(encoded)
|
||||
|
||||
def decode(self, text):
|
||||
pass
|
||||
decoded = []
|
||||
idx_key = 0
|
||||
|
||||
for char in text:
|
||||
if char in self.alphabet:
|
||||
text_pos = self.alphabet.index(char)
|
||||
key_char = self.key[idx_key % len(self.key)]
|
||||
key_pos = self.alphabet.index(key_char)
|
||||
|
||||
test = VigenereCipher("password", "abcdefghijklmnopqrstuvwxyz")
|
||||
pos = (text_pos - key_pos) % len(self.alphabet)
|
||||
decoded.append(self.alphabet[pos])
|
||||
|
||||
print(test.encode("codewars"))
|
||||
idx_key += 1
|
||||
else:
|
||||
decoded.append(char)
|
||||
|
||||
return "".join(decoded)
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user