You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

18 lines
551 B

  1. import itertools
  2. import re
  3. from dictionary import Dictionary
  4. def candidates(letters, dictionary: Dictionary, excludes, min=2):
  5. possibilities = []
  6. for length in range(min, len(letters) + 1):
  7. for comb in itertools.combinations(letters, length):
  8. for perm in itertools.permutations(comb):
  9. word = "".join(perm)
  10. possibilities.append(word)
  11. return dictionary.filter(possibilities, excludes)
  12. def filter_possibilities(possibilities, regex):
  13. return set(filter(regex.match, possibilities))