Model a word source as a directed graph. The nodes in the graph
correspond to unique combinations of letters which can be anagrammed
to form at least one word in the word source. We refer to such a
unique combination by its "alphagram", i.e. the letters of the
combination in alphabetical order. For example, AEINRST is an
alphagram from TWL06 (http://en.wikipedia.org/wiki/
Official_Tournament_and_Club_Word_List), whose anagrams are:
ANESTRI
ANTSIER
NASTIER
RATINES
RETAINS
RETINAS
RETSINA
STAINER
STEARIN
We can think of all the alphagrams of length N as belonging to the
same "plane". If visualizing a word source, I'd like to see word
"planes" represented as such.
A node can have zero or edges emanating from it. The edges represent
transformations to the alphagram they come from, that when applied
would result in the alphagram it goes to.
For example, the node AEINRST would have the following edges (among
others) heading out from it:
"+L" leads to the alphagram AEILNRST, whose anagrams are:
CANISTER, CERATINS, CISTERNA, CREATINS, SCANTIER, TACRINES
"-T" leads to the alphagram AEINRS, whose anagrams are: ARISEN,
ARSINE
"N -> M" leads to the alphagram AEIMRST, whose anagrams are:
IMARETS, MAESTRI, MISRATE, SMARTIE
Other transformations are possible, of course, but the three listed
above -- add a letter, remove a letters, and replace one letter with
another -- are what I'm concerned with initially.
A nice first story would be: Given a word source, and a starting node,
I want to see the anagrams of the alphagram the node represents, as
well as the transitions out of the node, so that I stand a better
chance of remembering what words those letters make, as well as
getting a sense of other words that are possible given an extra
letter.
After that: Given a word source and a starting node, I'd like to be
able to "move to" a neighboring node according to the transformation
on the edge from my current node to the neighbor. In repeatedly doing
so, I hope to get a better sense of what words are "near" others --
that is, what words I can make with letters almost matching what I
currently hold.
More later. Hope this is good food for thought.
--p