million-perfect-letters/bin/findmissing.py

31 lines
1006 B
Python
Executable File

#!/usr/bin/env python3
import sys
import itertools
wordsfile = sys.argv[1]
puzzlefile = sys.argv[2]
with open(wordsfile) as f:
validwords = set([x.strip() for x in f.readlines()])
#print(validwords)
with open(puzzlefile) as f:
rawpuzzle = [x.strip() for x in f.readlines() if ("#" not in x) and ("[eof]" not in x)]
puzzles = [[list(c) for c in x.split("|")[0].split(",")] for x in rawpuzzle]
knownwords = [[c for c in x.split("|")[1].split(",")] for x in rawpuzzle]
for i in range(len(puzzles)):
p = puzzles[i]
missing = []
allcombos = set(["".join(x) for x in list(itertools.product(*itertools.zip_longest(*p)))])
#print(allcombos)
for v in validwords:
if (v in allcombos) and (v not in knownwords[i]):
knownwords[i].append(v)
missing.append(v)
if missing:
pieces = rawpuzzle[i].split("|")
pieces[1] = pieces[1] + "," + ",".join(missing)
print("|".join(pieces))
else:
print(rawpuzzle[i])
print("[eof]")