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
18 lines
551 B
import itertools
|
|
import re
|
|
|
|
from dictionary import Dictionary
|
|
|
|
|
|
def candidates(letters, dictionary: Dictionary, excludes, min=2):
|
|
possibilities = []
|
|
for length in range(min, len(letters) + 1):
|
|
for comb in itertools.combinations(letters, length):
|
|
for perm in itertools.permutations(comb):
|
|
word = "".join(perm)
|
|
possibilities.append(word)
|
|
return dictionary.filter(possibilities, excludes)
|
|
|
|
|
|
def filter_possibilities(possibilities, regex):
|
|
return set(filter(regex.match, possibilities))
|