/Scrabble-Solver

Demo of "The World's Fastest Scrabble Solver" algorithm with a visualization in Pygame

Primary LanguagePython

Scrabble Solver

This is a Python implementation of a Scrabble Solver originally described in "The World's Fastest Scrabble Program" by Andrew Appel and Guy Jacobsen.

drawing

The solver uses a dictionary of 279,497 valid Scrabble words to select the highest-scoring word on any given board and rack of tiles. I've decided not to include the Collins Scrabble Dictionary that I used since it appears to be copyrighted, but it's easy enough to find online.

I discovered that a lot of strange and seemingly made-up words actually exist in the Scrabble dictionary. This is especially apparent with two-letter words, where words like "EE" and "AA" are allowed. These words allow the solver to score many additional points in the endgame when space for larger words has been eliminated.

drawing

References

For creating the Directed Acyclic Word Graph (DAWG), I referenced blog posts by Steve Hanov and Jean-Bernard Pellerin.

For the word creation algorithm, I exclusively referenced the aforementioned "World's Fastest Scrabble Program"