Back in Christmas of 2015, while I was home with my sister, we got addicted to this great word-game from Microsoft — Wordament. It was pretty addictive a game and got us gripped for most of our time back then. Besides all the good things about the game, the only sore point was — I could never beat her.
The game works in a way that a new word puzzle is sprung at the world every two-minutes. Thereafter, all participants do their gig for another two minutes, before the scoreboard bearing their world rank is flashed. One is supposed to figure out all possible words from a given alphabet-soup matrix by tracing finger over their spellings.
My marasmic vocabulary topped with an outdated dexterity (by 5 years compared to my sister) went against me and I lost it to her all the time. The numerous defeats and not-so-friendly banters which followed — they kept me haunting even when I was back at work from my sabbatical.
For the fighter I am, I decided to avenge it all.
I started working on a design which could help me accomplish the unimaginable. I started with studying the game architecture to find any loop holes which could be exploited. Wordament has no APIs (it is not required) and since the entire thing was real-time — one didn’t have the luxury of exploring the packet-replayisque methods to claim victory.
So, finally I decided to take a route which would automate the entire game play. Backed by word power of an open-source dictionary, I thought I would beat everyone in the game by making use of speed of a machine playing the game vis-a-vis a human. The algorithm for the escapade that I came up with was
- Read the characters on the board using some OCR
- Work out possible words keeping in mind the neighbour-check and
- Traverse word-paths using a mouse automation routine.
It took me around three days to get the entire thing working but at the end it was sheer bliss.
Sorry sister, I got you.
PS : We still play this game at times in human-mode 😉