First things first: all of the word lists used in this app came from SCOWL (And Friends) and are Copyright 2000-2018 by Kevin Atkinson. Many thanks to the people at SCOWL for what has clearly been a lot of very hard, meticulous work over a long period of time.
SCOWL also provides a web tool to create custom versions of all their lists. I used that tool to create the lists for this app.
The SCOWL Readme has in lots of information about the SCOWL lists. I also inluded the 12dicts lists so I would have more to play with.
If you're not familiar with Spelling Bee, take a look at the Spelling Bee site. Long story short: it's a word game published by the New York Times in which you create words from a set of letters. A new puzzle with a new set of letters appears every day, and most people try to reach "Genius" level by, well, finding a lot of words.
By the way, much to my chagrin, reaching Genius level does not mean you're a real genius.
Not in any way whatsoever. I'm just an NYT subscriber and a Spelling Bee solver.
Through years of playing Spelling Bee, my goal every day was to reach Genius level, which most people count as having "solved" that day's puzzle.
But even if you reach Genius level there are still more words left to find, and if you find all the rest, you are crowned Queen Bee! That's the highest level.
When I managed to reach Genius level, I was always curious about which words I had not found along the way. Had I just overlooked obvious words, or were there words I simply didn't know? It usually turns out to be a little of both. So beyond curiosity, knowing which words you missed is a good way to learn new words, and useful in getting better at solving future puzzles.
Well, yes, I suppose so. But where's the fun in that?! Wondering what words I'd missed also started me thinking about the software that was used to create the puzzle in the first place. They clearly had to have some automated way to find all words for some random set of letters, then a process for deciding which words to include in the puzzle and which to leave out.
I had in mind a couple of ways you could accomplish that in software, so I decided to write a little app to test my ideas for fun.
Warning: Techspeak Ahead — For the technically inclined: the approaches I imagined involved using either regular expressions or Python sets to find words containing certain letters. Both ways work, but I ended up using sets. The code is cleaner—regexes are powerful, but ugly—and sets may be slightly faster, though the speed difference would not be noticeable to an end user.
Before writing a line of code I needed to solve a problem: where was I going to get a good English language dictionary? I was definitely not going to create one myself. Besides, I didn't really need a dictionary—which would have definitions, parts of speech, and a lot of stuff I didn't need. What I did need was a simple list of, I don't know, a few thousand English words. How many thousand? I had no idea, since the official Spelling Bee word list is apparently top secret, marked eyes-only for NYT game poobahs.
Finding an open source word list was harder than I expected.
I eventually found a list hiding in a dusty corner of the internet. It contained more than 370,000 English words, and no definitions. Initially, I thought it was exactly what I needed. Spoiler alert: it wasn't. (I won't mention where I got this crappy list, since I don't want to hurt anyone's feelings.)
That uncurated, random list with a bazillion words was full of abbreviations, misspellings, proper nouns, esoteric "words" and all manner of cruft that was of no use whatsover in solving a Spelling Bee puzzle. It worked fine to get started and for initial testing, but once I had a working version, I needed a better word list.
That was when I stumbled upon the SCOWL site, where some very smart people have joined forces to create not just one good English language word list, but several. Primarily for spell-checking software, they have created lists in American, British, Canadian, and other flavors of English. This is what I was looking for. In fact, there are several lists just of American English words.
All those SCOWL lists was an embarrassment of riches that presented a different problem. It wasn't exactly clear which list would work best for my Spelling Bee word-finding.Curiosity struck again so, being a bit of a word nerd, I created the Show Summaries feature to allow me to compare the various SCOWL lists and to assess how each performed as a source for Spelling Bee words.
Thus was born the Show Summaries feature. Find Words only searches one list at a time, but Show Summaries searches all of the supported word lists simultaneously and produces a table comparing them, including all the words from all the word lists together in one place.
As a quick aside: Show Summaries is good for comparing the lists, but Find Words may be better for working with a specific puzzle (i.e., finding the words for a given set of letters) since it displays words in a way that mimics how the Spelling Bee hints page and Spelling Bee Buddy display hints: i.e., grouped either by initial letters or by word length.
Probably not. (Except for Spelling Bee players trying to cheat their way to Queen Bee ... Wait. Did I say cheat? I meant hints! Hints is what they need!) But, it's mildly interesting word esoterica, so someone may care for a reason that I wouldn't know. Might as well put it up on the interwebs for my fellow word nerds.
And yet, here you are at the end. Thanks for reading!