No description, website, or topics provided.
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
uwsgi_conf_files
web
.gitignore
LICENSE
README.md
requirements.txt
run_letterpress_web.py

README.md

Letterpress Solver

Letterpress is an iOS word game similar to boggle. Given a grid of 5x5 letters, the challenge is to make words using a tile at most once, controlling the board in a strategic way to stay ahead of your opponent.

Demo

You can access a running version of this code at lp.bathompso.com. Simply take a screenshot of your phone and upload it. The algorithm will parse out your board and return the optimal choices.

NOTE: Some letter recognition is broken, as the letter reference library being used was trained on a previous version of the font, and with the font update, letters no longer match exactly. Modification and/or retraining with the new font will be necessary to get this working 100% again.

Running Locally

You can get a version of the webapp running locally by:

  • Install all required packages in requirements.txt
  • Run python run_letterpress_web.py
  • The webapp will accessible at http://localhost:16000

Meta

In my learning of Python, I challenged myself to build this "solver" program that would read in a board and return the most optimal plays. This required some image handling (as typing in your entire board gets pretty tedious, and it was another interesting thing I had never done before with Python), a smart algorithm, and some thinking about how to codify the strategy in the game into numerical values to product the "high value" words based on the positions of the letters. Everything was then wrapped into a basic Flask app so it could be served on the web and accessed anywhere I might be playing letterpress.

As with all code, it becomes embarrassing to you after enough time has passed, and this project now crosses into this realm. There is much in the code + algorithm that could be done better, but creating this product when I was still learning Python was invaluable experience