86 lines
1.7 KiB
Python
86 lines
1.7 KiB
Python
import re
|
|
|
|
words = []
|
|
with open("english-words.txt", "r") as f:
|
|
for line in f.readlines():
|
|
line = line.strip()
|
|
if not line.isalpha(): continue
|
|
|
|
words.append(line)
|
|
|
|
def find_word_by_letters(letters):
|
|
pattern = ""
|
|
for possibilities in letters:
|
|
if len(possibilities) == 0:
|
|
pattern += "."
|
|
elif len(possibilities) == 0:
|
|
pattern += possibilities[0]
|
|
else:
|
|
pattern += "["
|
|
pattern += "".join(possibilities)
|
|
pattern += "]"
|
|
|
|
compiled_pattern = re.compile("^" + pattern + "$")
|
|
|
|
found_words = []
|
|
for word in words:
|
|
if compiled_pattern.match(word.upper()):
|
|
found_words.append(word)
|
|
|
|
return found_words
|
|
|
|
|
|
letters = [
|
|
["P"],
|
|
["L"],
|
|
[],
|
|
["K", "I", "C", "A"],
|
|
["Z", "O", "N", "K", "J"],
|
|
["O", "M", "G", "E"],
|
|
["Z", "Y", "X", "W", "V", "U", "T", "S", "R", "Q", "P"],
|
|
["Y", "U", "Q", "M", "I", "E"],
|
|
["E"],
|
|
["D"]
|
|
]
|
|
|
|
banned_words = [
|
|
"zeed",
|
|
"PL",
|
|
"PLA",
|
|
"PLT",
|
|
"PLP",
|
|
"plf",
|
|
"PLC",
|
|
"plu",
|
|
"PLR",
|
|
"pltano",
|
|
"ed",
|
|
"MED",
|
|
"yed",
|
|
"QED",
|
|
"PLD",
|
|
"Ppli",
|
|
"ply",
|
|
"PLL",
|
|
"PLM",
|
|
"pli",
|
|
"PLO",
|
|
"PLS",
|
|
"PLCC",
|
|
"SED",
|
|
"CED"
|
|
]
|
|
|
|
for split_index in range(1, len(letters)-1):
|
|
possible_words1 = find_word_by_letters(letters[:split_index])
|
|
if len(possible_words1) == 0: continue
|
|
|
|
possible_words2 = find_word_by_letters(letters[split_index:])
|
|
if len(possible_words2) == 0: continue
|
|
|
|
for word1 in possible_words1:
|
|
if word1 in banned_words: continue
|
|
|
|
for word2 in possible_words2:
|
|
if word2 in banned_words: continue
|
|
print(f"{word1} {word2}") |