This repository is my ongoing fascination with solving word games semi-automatically.
- originally started out as an alphaguess.com binary search solver
- was initially curious to modify mid point selection to try simpler prefix words first
- this paired with an official scrabble word list proved very effective
- later on paired with a dutch wordlist to solve alfagok.diginaut.net
- LLM assisted solver for cemantle was made next
- this later was applied to the twin cemantix french puzzle
- and even later became fully automated
-
regular expression driven solver for squareword.org came next
-
and a similar regular expression solver for dictionary.com hurdle was made shortly after
-
a randomized/heuristic search solver for spaceword.org is working well enough to solve its daily puzzles, but doesn't yet work efficiently enough to solve weeklies
-
then inverted the wordle solver's goals to "not solve wordle" ( dontwordle.com ), by a simplified and score-inverted descendent of hurdle solver
-
eventually scaled out further to quordle, octordle, and sedecordle
-
most recently a solver for wordgrid, which is similar to the wordle family solvers
Throughout I've developed a few modules:
sortem.py-- handles possible word scoring, sampling, and choicestore.py-- every solver stores its state for the day in a log file- this log file also contains ans interactive user input and responses
- in the case of the semantic solver, it contains all of the fully automated prompting
- a report generation process gets hung off the back of these logs, allowing simplified/unified summarization for social sharing
ui.py-- a prompt UI state module, oriented around aState = Callable[[PromptUI], State|None]monadstrkit.py-- supporting to the log and ui, mostly oriented around a peek-able iterator, used to tokenize word, lines, and user input- ended up making a neat
MarkedSpecunit test harness, which allows a test to be parameterized by easy to edit markdown content
- ended up making a neat