

Use Letterpest to win at Letterpress - dmthompson
http://www.letterpest.com/

======
alexmchale
I find it oddly humorous that the instructions tell you that you must use the
Light theme, then the illustration of taking a screenshot shows a dark theme.

~~~
labo
I find you oddly humorous and I'm not saying that's a bad thing. Letterpest is
aw3som3!

------
kmfrk
Isn't a trie structure the data structure you'd always go for with a
dictionary-based project?

EDIT: Title just changed and doesn't mention it (as a feature) anymore.

~~~
zwily
I think I'd have used a bloom filter for something like Letterpress.

~~~
buss
I'm not seeing how a bloom filter would help you here. The only application of
a bloom filter that I can see is checking whether or not the word candidate
you generated is in a dictionary. All n-choose-k sets is enormous and you'd
spend a very long time just generating the candidates.

A prefix trie, as the GP mentioned, seems like a very good and obvious
approach. You avoid most of the work generating non-words because all paths
lead to complete words unless you run out of letters and you're not on a
terminal.

What do you gain from the bloom filter?

~~~
baddox
I suspect zwily was talking about the word verification for the Letterpress
app itself, not the cheating app.

~~~
zwily
Right - just for verification in Letterpress. The occasional false positive
wouldn't be so bad, and you can tune your bloom filter so that it's really
rare.

------
MrScruff
I don't really understand this - has someone really gone to all this trouble
to help people cheat at a free word game?

~~~
gojomo
It's the interesting problem -- letter recognition, dictionary search,
constrained ranking -- that likely motivates the author(s). The practical use
in helping cheaters is just a bonus for bringing added attention to the
engineering achievement.

Still, the Letterpress board is so fixed in its layout/fonts that I'm
surprised they need a 'neural network' recognizer, and prefer a certain color
scheme.

Advanced assignment: calculate whether any given board is a 'solved' game,
with a predictable outcome given two 'perfect' players. (My guess is that all
boards are, given the advantage of moving first in biasing the score balance
in your direction.)

~~~
MrScruff
I understand why some might be motivated to solve it as a problem, but it
doesn't seem a particular impressive technical achievement to me. It's just
like how everyone and his dog was writing soduku solvers a few years back.

Except in this case it's basically contributing to ruining a game, or at least
the 'play with strangers' component. I would have thought a blog post
outlining the approach taken to solve the problem would have sufficed.

~~~
gojomo
There were already cheap apps in the App Store for Letterpress cheating, so
showing off open-source code (or a web service) doesn't change a cheater's
prospects much. On the other hand it does serve as practice/illustration of
the techniques involved.

------
boundsj
github: <https://github.com/boundsj/letterpest>

------
pwthornton
This is why LetterPress needs a Lighting Press mode, where games have to be
completed in five minutes, for instance. The ability to outright cheat, or
troll around dictionaries and the Internet for words is not possible if you
need to complete a move in 20 seconds.

~~~
baddox
A timer alone wouldn't help much. One could still take a screenshot of the
game board during the first turn, upload it here, then have a list of good
words to use for the rest of the game.

~~~
pwthornton
Would there be a way for these lightning rounds to disqualify someone if they
put the app into a background process? You would have to be locked into the
app in the foreground for the entire match.

~~~
baddox
I've never done iPhone development, but activities in Android have an onPause
method that can be overridden and gets called whenever the activity gets
temporarily hidden. There would probably be problems with getting disqualified
for getting a phone call, etc. but I'm certain that something can be done in
iPhone.

------
jzting
Nice work!

Small bug: "Q" is getting recognized as "O" on a few boards I've tested.

~~~
boundsj
thanks! will work on that

