def test_parse_word(): phrase_dict, phrase_len = utils.phrase_to_dict("poultry outwits ants") tree, words = LetterBranch.parse_words(phrase_dict, "data/wordlist") # Exclude invalid words. assert ('z' in tree.children) == False tree.children['t'].children['a'].children['i'].children[ 'l'].is_word == True for word in words: assert word.is_word == True
def test_search_tree(): phrase = "appleandlamas" HashProp.set_hash_obj(HashProp("plain", "data/sample-to-find-3.txt")) phrase_dict, phrase_len = utils.phrase_to_dict(phrase) letter_tree, words = LetterBranch.parse_words(phrase_dict, "data/sample") LetterBranch.set_letter_tree(letter_tree) word_tree, word_tree_children = WordBranch.get_word_tree_root( phrase_len, phrase_dict, words) # Check I got the 'apple' word_branch. word = word_tree_children[2] assert str(word.letter_branch) == 'apple'
def test_complex_branching_3(): HashProp.set_hash_obj(HashProp("plain", "data/sample2-to-find-3.txt")) phrase = "andlamasgroves" phrase_dict, phrase_len = utils.phrase_to_dict(phrase) print(phrase_dict) print(phrase_len) letter_tree, words = LetterBranch.parse_words(phrase_dict, "data/sample2") LetterBranch.set_letter_tree(letter_tree) word_tree, word_tree_children = WordBranch.get_word_tree_root( phrase_len, phrase_dict, words) construct_word_tree_start(word_tree, word_tree_children) anagrams = search_solved_anagrams_start(word_tree, word_tree_children) for anagram in anagrams: print(anagram) assert len(anagrams) == 7
def test_anagram_solutions_4(): HashProp.set_hash_obj(HashProp("plain", "data/sample-to-find-4.txt")) phrase = "andapplegroveslamas" phrase_dict, phrase_len = utils.phrase_to_dict(phrase) print(phrase_dict) print(phrase_len) letter_tree, words = LetterBranch.parse_words(phrase_dict, "data/sample") LetterBranch.set_letter_tree(letter_tree) word_tree, word_tree_children = WordBranch.get_word_tree_root( phrase_len, phrase_dict, words) construct_word_tree_start(word_tree, word_tree_children) ''' Should produce 24 solutions: ''' anagrams = search_solved_anagrams_start(word_tree, word_tree_children) for anagram in anagrams: print(anagram) assert len(anagrams) == 24
'''Run''' if __name__ == "__main__": args = sys.argv if len(args) == 5: start_time = timeit.default_timer() # Time phrase = args[1] wordlist_filename = args[2] hash_algo = args[3] hash_filename = args[4] phrase_dict, phrase_len = utils.phrase_to_dict(phrase) hash_obj = HashProp(hash_algo, hash_filename) HashProp.set_hash_obj(hash_obj) letter_tree, words = LetterBranch.parse_words(phrase_dict, wordlist_filename) LetterBranch.set_letter_tree(letter_tree) word_tree, word_tree_children = WordBranch.get_word_tree_root( phrase_len, phrase_dict, words) construct_word_tree_start(word_tree, word_tree_children) anagrams = search_solved_anagrams_start(word_tree, word_tree_children) elapsed = timeit.default_timer() - start_time # Time print('Time elapsed --> ', elapsed, 'seconds') else: print( 'Invalid arguments, expecting: "phrase" word_file "hash algo" hashes_file' )