def test_double_start(self): found_words = find_words("*ŻA* LDEF_R", self.dictionary_words) self.assertEqual(found_words, [ 'DOŻA', 'DRAŻA', 'DRŻAŁ', 'DUŻA', 'DŻAG', 'DŻAUL', 'DŻAULE', 'DŻAZ', 'GREŻA', 'JEŻA', 'LEŻA', 'LEŻAK', 'LEŻAŁ', 'LOŻA', 'RADŻA', 'RÓŻA', 'RYŻA', 'RŻAŁ', 'RŻANE', 'SERŻA', 'UŻAL', 'ZDŻAR', 'ŻAB', 'ŻAD', 'ŻADEM', 'ŻADEN', 'ŻADNE', 'ŻADU', 'ŻADY', 'ŻAGLE', 'ŻAK', 'ŻAL', 'ŻALĄ', 'ŻALE', 'ŻALEM', 'ŻALEŃ', 'ŻALĘ', 'ŻALI', 'ŻALNE', 'ŻALU', 'ŻALŻE', 'ŻANR', 'ŻAR', 'ŻARĆ', 'ŻAREŁ', 'ŻAREM', 'ŻAREN', 'ŻARLE', 'ŻARLI', 'ŻARŁ', 'ŻARN', 'ŻARNE', 'ŻART', 'ŻARTE', 'ŻARU', 'ŻARY', 'ŻARZ', 'ŻARZE' ])
from src.input import parse_user_input, IncorrectInputException, read_words_from_dictionary, create_letter_score_dict from src.solver import find_words if __name__ == '__main__': print("Starting program") words = read_words_from_dictionary() letter_score_dict = create_letter_score_dict() while True: user_input = input("Enter phrase or 'q' to exit program ") if user_input is "q": break try: found_words = find_words(user_input, words) map_letter_to_score = lambda letter: letter_score_dict.get(letter) words_with_score = { word: sum(map(map_letter_to_score, word)) for word in found_words } sorted_words = sorted(words_with_score.items(), key=operator.itemgetter(1), reverse=True) if len(sorted_words) == 0: print("Sorry any words match") continue for w, s in sorted_words: print(str(w) + " \t " + str(s))
def test_polish_letters(self): found_words = find_words("A. ABCŻ", self.dictionary_words) self.assertEqual(found_words, ["AA", "AŻ"])
def test_blank(self): found_words = find_words("B.K _", self.dictionary_words) self.assertListEqual(found_words, sorted(['BAK', 'BEK', 'BOK', 'BUK', 'BYK']))
def test_find_rybak_bak_byk(self): found_words = find_words("*B.K* RYA", self.dictionary_words) self.assertListEqual(found_words, sorted(["RYBAK", "BAK", "BYK", "BYKA"]))
def test_find_aa_ad(self): found_words = find_words("A. ABCD", self.dictionary_words) self.assertEqual(found_words, ["AA", "AD"])