init
This commit is contained in:
commit
5ec05b9f8b
2 changed files with 14918 additions and 0 deletions
63
solve.py
Normal file
63
solve.py
Normal file
|
@ -0,0 +1,63 @@
|
|||
CORRECT_WORD = "TODAYS_WORD"
|
||||
|
||||
"""
|
||||
2 = correct (green)
|
||||
1 = diff place (yellow)
|
||||
0 = nowhere (gray)
|
||||
"""
|
||||
|
||||
MATRIX = """
|
||||
02020
|
||||
00000
|
||||
00200
|
||||
20002
|
||||
02220
|
||||
00000
|
||||
""".strip().split("\n")
|
||||
|
||||
assert len(MATRIX) == 6
|
||||
assert all([m != "22222" for m in MATRIX[0:5]]) # if you solve the word early you dont get any more guesses
|
||||
|
||||
words = open("words.txt", "r").read().strip().split("\n")
|
||||
assert CORRECT_WORD.lower() in words
|
||||
|
||||
def matches(given, correct, mask):
|
||||
if len(given) != len(correct) or len(mask) != len(correct):
|
||||
return False
|
||||
|
||||
n = len(given)
|
||||
result = ['0'] * n
|
||||
correct_counts = {}
|
||||
|
||||
for i in range(n):
|
||||
if given[i] == correct[i]:
|
||||
result[i] = '2'
|
||||
else:
|
||||
correct_counts[correct[i]] = correct_counts.get(correct[i], 0) + 1
|
||||
|
||||
for i in range(n):
|
||||
if result[i] == '2':
|
||||
continue
|
||||
if given[i] in correct_counts and correct_counts[given[i]] > 0:
|
||||
result[i] = '1'
|
||||
correct_counts[given[i]] -= 1
|
||||
|
||||
return ''.join(result) == mask
|
||||
|
||||
final_words = []
|
||||
|
||||
for i in range(len(MATRIX)):
|
||||
mask = MATRIX[i]
|
||||
|
||||
found = False
|
||||
for word in words:
|
||||
if word not in final_words and matches(word, CORRECT_WORD.lower(), mask):
|
||||
final_words.append(word)
|
||||
found = True
|
||||
break
|
||||
|
||||
if not found:
|
||||
print(f"Unsolvable for {i}")
|
||||
exit(1)
|
||||
|
||||
print(*[final_word.upper() for final_word in final_words], sep="\n")
|
Loading…
Add table
Add a link
Reference in a new issue