The essential Scrabble aid
Scrabaid is a lightweight Java program which indexes a wordlist for fast pattern searching, and uses these indexes to suggest words to the user. Given any scrabble board, and tray of available letters, Scrabaid will return you almost every possible combination of letters, ordered by score, to enable you to kick some serious butt in Scrabble games.
The searching/indexing algorithm used in Scrabaid is essentially a hash table. The size of the hash tables vary depending on the maximum length of words that Scrabaid can suggest. Personally, I use Scrabaid to search words of up to 13 characters in length, and this requires about 363 MB of disk space. If indexes for words of up to 10 characters in length are used then only 90 MB of disk space is required.
In practise, I've found this hash-table method to provide a good way of searching on patterns, with the number of mismatching words typically small (mostly less than 10 for words with less than 8 characters). Scrabaid can suggest solutions given a board within about 5 seconds generally. More time is taken if you have a blank or two in your tray (as there are a far greater number matches).
Scrabaid currently returns virtually all combinations of words available given a board configuration. The only known limitation is:
How good is Scrabaid?
Scrabaid is currently only an aid. It does not decide on which moves you should make - you have that decision. One simple strategy would be to always pick the highest scoring move available. However, this is not necessarily the best strategy - in many circumstances picking the highest scoring move will "open up" opportunities for your opponenet to lay tiles across 3 word multiplier and 3 letter multiplier tiles.
Building some level of intelligence, possibly using probabilistic move look-ahead and/or heuristics would be the next step in the development of Scrabaid.
In the meantime, I'm happy to report that against ordinary human beings, Scrabaid can help you score 450 points or more, whilst the human opponent will score somewhere around 200 to 250. When playing two Scrabaided players against each other, scores are in the high 300s. A typical game is shown in the screenshots section.
Why write Scrabaid?
I wrote Scrabaid for two reasons: