-
Notifications
You must be signed in to change notification settings - Fork 0
/
spelling-bee-solver.py
63 lines (44 loc) · 1.71 KB
/
spelling-bee-solver.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
import argparse
import keyboard
import os
import time
def load_words(language: str):
word_file = "de.txt" if language == "de" else "en.txt"
with open(os.path.join("word_lists", word_file)) as _word_file:
valid_words = set(_word_file.read().split())
return valid_words
def parse_args():
parser = argparse.ArgumentParser()
parser.add_argument("--definitive", "-d", help="Specfiy a letter that must occur in the word", type=str, required=True)
parser.add_argument("--letters", "-l", help="Specify letters that can occur in the word", type=str, required=True)
parser.add_argument("--language", "-L", type=str, choices=["en", "de"], default="en")
parser.add_argument("--autosolve", action="store_true")
return parser.parse_args()
def main():
args = parse_args()
english_words = load_words(args.language)
definitive: str = args.definitive.lower()
letters: list = sorted(list(args.letters.lower()))
letters.append(definitive)
valid_word = list()
for word in english_words:
if len(word) >= 4 and definitive in word:
distinct_letters = sorted(list(set(word.lower())))
if set(distinct_letters).issubset(set(letters)):
valid_word.append(word)
print("-"*50)
print("SPELLING BEE SOLVER")
print("-"*50)
if args.autosolve:
print("Starting AutoSolve")
print("Navigate to the browser windows within 5 seconds!")
print("-"*50)
time.sleep(5)
for word in sorted(valid_word):
if args.autosolve:
keyboard.write(word, delay=0.1)
keyboard.press_and_release('enter')
time.sleep(0.75)
print(word)
if __name__ == '__main__':
main()