A solver for the Blossom word game. The solver is for non-commercial education purposes only. All trandemarks belong to Merriam-Webster.
https://kensnyder.github.io/blossom-solver/
I love playing Blossom but always wonder how my score stacks up against the best possible score. This tool attempts to find a high score for a given puzzle. You can also use it in "Hints mode" before you complete the puzzle. It will give you hints including the number of possible pangrams, number of possible words, high score, and first letters of the top words.
Merriam-Webster does not specify what dictionary is used for the game. We only have some guidelines:
Additionally, due to the nature of the game, we have the following constraints:
Many dictionaries are available online. The Scrabble dictionary is perhaps the best guess at the contents of the Blossom dictionary, but it does not contain words with more than 15 letters because those are impossible to play in Scrabble.
This Blossom solver includes 3 different dictionaries for 3 different skill levels.
I started with the largest dictionary I could find, from this GitHub repository: https://github.com/dwyl/english-words which has about 370k words.
Note that it and all other files mentioned below are in the data directory of this repository.
data/full-dictionary.txt
, contains about 370k
words.data/*-letters.txt
data/medical-words.txt
,
data/proper-nouns.txt
, and data/not-in-dictionary.txt
.data/swear-words.rot13.txt
scripts/compile-words.mjs
to remove all those invalid words
from data/full-dictionary.txt
, leaving 118k words saved to
data/uncompiled-level3.txt
.data/wiktionary-100k.txt
.data/uncompiled-level2.txt
. That file contains 26k
words.Coming soon. I will likely use the Level 2 dictionary and remove words that I've personally never heard of.
After you complete a game, Blossom will show you all the words and pangrams
that were possible. Looking at words on the list, I discovered some words that
in the Blossom game that are not in data/full-dictionary.txt
. I manually added
those words to data/discovered-words.txt
. Those are included in the final
uncompiled and compiled dictionaries. Similarly, words I found in our dictionary
but not in Blossom are saved to data/discovered-non-words.txt
.
I used letter frequencies in each dictionary to order the alphabet from least common letter to most common letter. The bot uses score then letter frequency to choose its final plays. It is more naive than permutation or some mathematical algorithm, but usually gets the maximum score or very close to it.
I've chosen to precompile the dictionaries to allow the solver to provide solutions in a matter of milliseconds. The downside is that your browser has to download these larger files upon page load.
By example, here is the scheme for the compilation format:
mustard24+
muster11
mustered27mustrd32e+
Example breakdown:
# mustard is a pangram worth 24 points regardless of which letter is the bonus petal
mustard24+
# muster is not a pangram and worth 11 points regardless of which letter is the bonus petal.
muster11
# mustered is a pangram
# If the bonus petal is m, u, s, t, r or d, it is worth 27 points
# If the bonus petal is e, it is worth 32 points
mustered27mustrd32e+
ISC License (ISC)