Elise Crossword Game Software

This software program is dedicated to the memory of James Robert Street, 1933-2012

What is it?

Elise is state-of-the-art crossword puzzle game analysis software with a design philosophy inspired by modern chess engines.
It is a useful tool for serious players of Scrabble®, Clabbers, or any similar games.
At "blitz" speeds, Elise plays a sharp game that will hang with the best human players. At tournament time
controls on decent hardware, Elise plays a superhuman game that will compete with (and usually best) any other anagram engine.

Some screenshots

(Click to see the full-size image.)

Calculating a tough position

How 'bout a nice game of Clabbers?

Spanish-language game play

Heat map, showing opponent's likely responses to a move

Simulation in progress...

A long and lonely game

What are some of its features?

Elise can be configured to analyze a variety of different crossword puzzle games and can use custom, plain-text word lists.

Elise has an attractive and easy to use interface.

Elise can analyze crossword games in several different languages. If yours isn't supported, it may be added -- see the FAQ.

Moves can be generated instantly using the "quick move find", or Elise can ponder moves deeply in simulation. The user can
set how many ply Elise looks ahead, and how many threads (and, correspondingly, CPU cores) Elise uses in move find. Most simulations
are done quickly, but long simulations can be interrupted at any time.

Simulation can attempt to maximize either point spread or win probability. Generally speaking, optimizing spread is
faster and about as good early in the game, but especially in "close and late" situations, optimizing win probability is stronger.

Elise allows setting tiles known to be on your opponent's rack (for crossword games where racks are hidden) and will use this information in simulation.

Simulation can be performed at any depth on any move (including moves involving "phonies") for as long as is desired.

Definitions for any word can be seen.

You think you lost that game because of bad tile draw luck? Well, Elise can quantify for each move exactly how bad (or good) your tile luck
was by comparing your tile draw with all possible tile draws.

There are also features just for fun, like "search for the best hypothetical move (using any possible rack) on the given board".

How does it play so well?

Elise has a parallelized architecture, allowing it to take advantage of modern multiple-core CPUs. Simulations, end
game searches, and other analysis can all be run multi-threaded.

Elise's move evaluation code runs quickly and takes into account a large amount of game state information: rack leave, remaining well composition, exposed bonus squares, possible hooks, the "opened" or "closed"-ness
of the board, end game timing, etc. Accuracy and speed in the evaluation
functions increase play strength. As in modern chess engines, a great deal of Elise's strength and its distinctive play style rest on
the move evaluator.

Elise uses multiple move generation algorithms, and selects according to which is
fastest for the current board and rack situation.
Faster move generation allows more move searches per second, resulting
in deeper ply simulation and stronger play.

Elise constructs statistical models of its opponent's rack distribution based on its previous plays; this allows it
to anticipate and block especially dangerous possible opponent moves, or open seemingly risky scoring opportunities when it's safe from retaliation.

Elise also has more than one simulation algorithm; a faster, less stable one can be used to increase its strength in timed games.

Elise plays a perfect end-game, in the sense that it will not lose a game in which a winning move can be found by exhaustive search.
It is not necessarily "greedy" in the usual sense -- see the FAQ for further explanation. It also includes heuristics that improve both "quick move" and simulation play in mid-to-late game situations, helping to maximize
the probability of reaching a won end-game.

For more information about Elise's move generation and move evaluator algorithms, see this page.

Word frequency data and estimated rack leave values for various languages can be viewed from this page.

Scrabble® phonies by playability

A list of the most commonly played 7- and 8-letter phonies in Elise's UNABRIDGED lexicon can be found
here. These are the phonies that have no playable anagrams in the
official TWL06 or CSW12 word lists.

Scrabble® opening book

An "opening book" containing Elise's evaluations of opening moves for the most common racks can be accessed
on this page.

Some history

Elise is the granddaughter of a software program I wrote in a summer afternoon in 1998. It was capable of playing Scrabble® or Clabbers on a variety
of different boards (and indeed, was
only the second computer implementation of Clabbers anywhere I'm aware of.)
It could play a reasonably strong game without an exhaustive end-game search or any simulation -- it had rudimentary knowledge of
rack leave, liked to close the board when ahead, and had heuristics that usually led to competent (if not perfect) end-game play.

This old program played a loose and rather human-like game -- more concerned with broad strategic
situations than the expected value of a rack leave to the hundredth-point. Sometimes this resulted
in finding a surprising move, but more often, it resulted in solid if not quite spectacular play. It was beatable if you were patient and a good player.

Many of the "human-like" ideas in the old program were taken, carefully tested, improved where they could be, and now are included in Elise's move evaluator. Instead of
dictating the move choice alone, however, they now provide a supportive role, and run millions of times a second, searching moves many ply ahead in simulation. As a result, the surprising moves are a little more frequent.
The old ideas, the things it learned from its predecessor, are still there, nestled deep inside Elise's DNA.

The old program was a favorite of my grandfather, James Robert Street, and he played it (and accused it of cheating) frequently. It took him
a while to finally beat it, and when he did, he loved bragging about it. He asked me more than once when a new version was coming. This
is, finally, it. Unfortunately, Grandpa did not live to play it. I think the probability is high, though, that he would not have
enjoyed playing Elise quite as much as the old program -- if he thought the old program cheated, I don't
want to hear what he'd accuse this program of doing.

About Elise's logo

The Greek letter epsilon is meant to suggest statistics, mathematical limits, and small things, like the placement of a single tile or whether to close a hook
now or wait until next turn. It is also the Greek "E", so it can stand for Elise's name. The infinity sign -- the score of the tile -- is again meant
to suggest mathematical limits, but also limitlessness -- that Elise will model all possibilities through the end of the game if you let it.
It also, of course, suggests power and strength, that from all the little "epsilons" something strong might rise.

Things still to-do

Support for more variants and other crossword games.

Elise's clock management, in timed games, can and should be improved. It should also be "tunable" to the hardware; on my machine it usually has
time left on its clock at the end, while on slower machines it might be prematurely terminating too many simulation moves. (As of version 0.1.8 hardware
benchmarking is available in Elise.)

Elise's pre end-game search should take advantage of tile guess data. It also uses a static end game search that is about 95% accurate in
evaluating the final decision of an end game position; getting this to 100% would be nice.

Allow options for conventionally greedy end-game play in both won and lost situations.

Add command line options or scripting, allowing for automated or semi-automated analysis with Elise.

Need to implement over-time penalties for clock games (these should be adjustable by the player). Fischer clocks would be a nice addition as well.

Any and all improvements in strength (because you can never have a strong enough player.)

A generic protocol allowing anagram engines to play each other, along the lines of Winboard for chess engines?

Downloads

Elise installer for Windows: version 0.1.8 (current), built 31 December 2013.

This installation includes the Elise software, word definitions, and rack statistics for TWL06 and CSW12 lexicons.
If you would like to use Elise for languages besides English, or you are analyzing older English-language games and want to
use earlier versions of the lexicon, you should download and install the appropriate lexicon packs (below.)

A terminal window version of Elise for Win32 and Linux platforms (suitable for scripting) is available on
this page. This version runs the GCG game analysis.

Lexicon packs: As of version 0.0.3, the Elise installer now only includes rack statistics, tile guess data, etc. for the
TWL06 and CSW12 lexicons. This is done to save room in the installer. The data for other lists can be downloaded separately. If you
are using these other lexicons, Elise will play a much stronger and faster game with this data than without it. To use these lexicon packs, unzip them into the same directory as the Elise executable file (this will normally be
under the "Program Files\Elise" directory, unless you specified a different install directory -- you may need administrator privileges to copy files into the directory.)

Elise is free to download and use. However, donations are welcome. Any amount to support development is greatly appreciated.

Amount (USD): $

Here are additional ways you can help with Elise:

Programming or localization: As of version 0.1.8, Elise source code is available for download, and contributions are
welcome. Please see more information on this page.

Running strength tests on your machine: Elise can run strength tests in the background. These tests will play
games using experimental features in Elise. These games will be uploaded to this directory and
will be examined to determine which features improve Elise's play! For more information about
running strength tests and the experimental features tested in any particular version, please see the versions page.

The DEFINITIONS file, containing word definitions, provided with Elise is primarily derived from Wiktionary data and as
such is made available under its CC-BY-SA/GFDL license. The original wiki source data is available here.

I'd like to thank the developer of the Very Sleepy profiler for Windows. It's a handy, light
and useful development tool.

Random number generation in Elise is via the Mersenne Twister by Makoto Matsumoto, Takuji Nishimura, Shawn Cokus, and
Richard J. Wagner. PNG image save in Elise is implemented
using a library, LodePNG, by Lode Vandevenne. Win32 progress dialog is from a library by Gopalakrishna Palem. Elise Windows UI
uses the Allegro 2-D graphics library. TrueType font support in Elise's Windows GUI is from an Allegro library, AllegTTF, by Doug Eleveld, which in turn
is based on code from the FreeType project.

A tip of the hat goes to Brian Sheppard, the developer of Maven, the first really strong computer Scrabble® player. I have wasted many hours playing his
engine, and not only has it sharpened my ability considerably, but it inspired me to develop my first anagram engine all those years ago.