diff --git a/src/Codewars/classy_extensions.py b/src/Codewars/classy_extensions.py new file mode 100644 index 0000000..5f3d78e --- /dev/null +++ b/src/Codewars/classy_extensions.py @@ -0,0 +1,6 @@ +from preloaded import Animal + + +class Cat(Animal): + def speak(self): + return f"{self.name} meows." diff --git a/src/Codewars/is_pangram.py b/src/Codewars/is_pangram.py new file mode 100644 index 0000000..843e0c7 --- /dev/null +++ b/src/Codewars/is_pangram.py @@ -0,0 +1,9 @@ +def is_pangram(st): + letters_used = [] + alphabet = set("abcdefghijklmnopqrstuvwxyz") + for letter in st.lower(): + if letter in alphabet: + letters_used.append(letter) + if set(letters_used) == alphabet: + return True + return False diff --git a/src/Codewars/vigenere_cipher_helper.py b/src/Codewars/vigenere_cipher_helper.py new file mode 100644 index 0000000..b560a7f --- /dev/null +++ b/src/Codewars/vigenere_cipher_helper.py @@ -0,0 +1,56 @@ +class VigenereCipher(object): + def __init__(self, key, alphabet): + self.key = key + self.alphabet = alphabet + + def encode(self, text): + len_text = len(text) + len_key = len(self.key) + + if len_key < len_text: + new_key = ( + self.key * (len_text // len_key) + self.key[: (len_text % len_key)] + ) + else: + new_key = self.key[:len_text] + + new_text = [] + + for l_text, l_key in zip(text, new_key): + if l_text in self.alphabet: + if l_key in self.alphabet: + new_pos = ( + self.alphabet.index(l_text) + self.alphabet.index(l_key) + ) % len(self.alphabet) + else: + new_pos = self.alphabet.index(l_text) + new_text.append(self.alphabet[new_pos]) + else: + new_text.append(l_text) + return "".join(new_text) + + def decode(self, text): + len_text = len(text) + len_key = len(self.key) + + if len_key < len_text: + new_key = ( + self.key * (len_text // len_key) + self.key[: (len_text % len_key)] + ) + else: + new_key = self.key[:len_text] + + new_text = [] + + for l_text, l_key in zip(text, new_key): + if l_text in self.alphabet: + if l_key in self.alphabet: + new_pos = ( + self.alphabet.index(l_text) - self.alphabet.index(l_key) + ) % len(self.alphabet) + else: + new_pos = self.alphabet.index(l_text) + new_text.append(self.alphabet[new_pos]) + else: + new_text.append(l_text) + return "".join(new_text)