Optimizing Wordle guesses

Published: Jan 17, 2022 by Steve Baskauf

I’ve recently started playing the viral word game “Wordle”. After numerous discussions among family members about guessing strategy, I decided to spend some time over the holiday weekend writing a Python script to play with different guessing algorithms and strategies.

The details are in a blog post, but if you don’t like reading text and just want to start playing with the code, you can go straight to this Colab notebook to run and hack the code yourself.

The TLDR summary of the blog post is:

  1. I generated a list of five-letter English words of a similar size to what is used in the game.
  2. I created a Wordle_list object that screens word lists based on “guess codes” (an alphanumeric version of the colored squares that the app shows you after you guess).
  3. I messed around with different ways to use letter frequencies in the words to assign scores to words in a list based on estimating how effective the words would be at screening out the other words.
  4. I wrote some code to generate the most effective words to use as automatic first two guesses (spoiler alert). They are “arose” and “glint”.
  5. I used existing Wordle game words to test whether it was more effective to just use these two words, or to let the scoring system chose the second word. It didn’t make much difference.

Enjoy!

Share

Latest Posts

Birding in Puerto Rico
Birding in Puerto Rico

After recently making a trip to Puerto Rico that was primarily focused on bird watching, I decided to write a blog post to pass on some of what we learned. Much of the information that we got from books or the Internet was outdated or incorrect, so hopefully this post will help others to have an easier time finding good places to bird there.

QT Py RP2040 workshop
QT Py RP2040 workshop

I’m really excited to be working with Vanderbilt Science and Engineering librarian Francisco Juarez to develop a workshop series to teach participants to program the QT Py RP2040 microcontroller using CircuitPython.

VanderBot 1.9 supports somevalue
VanderBot 1.9 supports somevalue

One of the issues I discussed at my recent talk in the Art in Context: Identity, Ethics, and Insight symposium was the problem of representing anonymous artists in knowledge graphs. The solution that the Wikidata community has accepted is to associate a P170 (creator) claim with a somevalue snak having a P3831 (object has role) qualifier value of Q4233718 (anonymous). In RDF, this corresponds to a blank node and Wikidata claims using somevalue are represented by blank nodes in the Query Service.