Advertisement
Guest User

Untitled

a guest
Jul 1st, 2022
74
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.53 KB | None | 0 0
  1. def solve_puzzle(puzzle,words):
  2.     def sort_word(w):
  3.         return "".join(sorted(list(w)))
  4.  
  5.     def create_word_dict(words):
  6.         word_dict = {}
  7.         for w in words:
  8.             k = sort_word(w)
  9.             word_dict[k] = word_dict.get(k,[]) + [w]
  10.         return word_dict
  11.  
  12.     def solve(s,buffer,word_dict):
  13.         #Sort buffer to match into word_dict
  14.         buffer = sort_word(buffer)
  15.  
  16.         #Base case success
  17.         if s == "" and buffer == "":
  18.             yield "",True
  19.             return
  20.  
  21.         #Buffer match
  22.         elif buffer in word_dict:
  23.             choices = word_dict[buffer]
  24.             for tail,result in solve(s,"",word_dict):
  25.                 if(result):
  26.                     for c in choices:
  27.                         yield c + " " + tail,result
  28.  
  29.         #Base case failure
  30.         elif s == "" and buffer != "":
  31.             yield "",False
  32.             return
  33.  
  34.         #Move char from string to buffer
  35.         if s != "":
  36.             yield from solve(s[1:],buffer + s[0],word_dict)
  37.  
  38.     word_dict = create_word_dict(words)
  39.     for phrase,success in solve(puzzle,"",word_dict):
  40.         if(success):
  41.             print(phrase)
  42.  
  43. if __name__ == "__main__":
  44.     mnemonic_words = [w.strip() for w in open("monero_words.txt","r").read().split("\n") if w != ""]
  45.     print(mnemonic_words)
  46.     puzzle = "syapotelaicdphcunmmaosadtniiulrhsepanptinanfuovelniajobimzezpiazaobsbrddmeanerefufdlntgyirulpssrreiebdunegdeccaukpeadimlltseneismaelsammorewesecaontifuan"
  47.     solve_puzzle(puzzle,mnemonic_words)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement