wordlefish/solver.py

88 lines
2.8 KiB
Python

#!/usr/bin/python3
import prob
words = [i.rstrip() for i in open("wordlist", "r").readlines()]
nocontain = []
contains = []
defcontains = []
while True:
line = input("? ")
if line.split(' ')[0] == "add":
# rules parser
string = line.split(' ')[1]
splitted = [(string[i:i+2]) for i in range(0, len(string), 2)]
count = 0
for i in splitted:
if i[0] == "n":
nocontain.append(i[1])
print("\033[47;97m {} ".format(i[1]), end="")
elif i[0] == "y":
contains.append((i[1], count))
print("\033[103;97m {} ".format(i[1]), end="")
elif i[0] == "g":
defcontains.append((i[1], count))
print("\033[102;97m {} ".format(i[1]), end="")
print("\033[0m")
count += 1
elif line.split(' ')[0] == "reduce":
buf = []
for i in words:
counter = 0
status = 1
for j in i:
if status == 0: break
try:
req = [item[0] for item in defcontains if item[1] == counter][0]
except:
req = None
nothere = [item[0] for item in contains if item[1] == counter]
if req != None:
if req == j:
counter += 1
continue
else:
status = 0
for k in nothere:
if k == j:
status = 0
if j in nocontain:
status = 0
counter += 1
for j in contains:
if not j[0] in i:
status = 0
if status == 1:
buf.append(i)
words = buf
elif line.split(' ')[0] == "listbuffers":
print(nocontain, contains, defcontains)
elif line.split(' ')[0] == "probmodel":
tmp = prob.main(words)
tmp.reverse()
print(tmp)
elif line.split(' ')[0] == "probruntime":
print(prob.runtime(words))
elif line.split(' ')[0] == "words":
print(words)
elif line.split(' ')[0] == "reset":
words = [i.rstrip() for i in open("wordlist", "r").readlines()]
nocontain = []
contains = []
defcontains = []
print("reset!")
elif line.split(' ')[0] == "help":
print("welcome to wordlefish, a 'engine' for wordle")
print("add - add pattern")
print("reduce - apply pattern filter")
print("listbuffers - list filters in buffers")
print("probmodel - output ordered arr based on expensive dist model")
print("probruntime - return iterations of probmodel")
print("words - list words in consideration")
print("reset - reset state")
print("help - this")