Anagrammer

Author: Joel Burton
Version: 1.0
License:GPL 2.0 or newer
Summary:Anagram-finder using dictionaries

This program will help you generate anagrams for playing word games.

For example, if you run it like:

$ anagrammer mushroom

it returns:

mushroom

8 = 1
  mushroom
6 = 3
  hommos humors mohurs
5 = 6
  homos hours humor mohur moors rooms

Which are all of the anagrams of mushroom in the dictionary over 5 characters long.

You can specify command-line options for the minimum number of letters, or to use alternate dictionaries. In addition, you can capitalize letters, and these letters will be required in the resulting words. For example, if we had typed "MusHroom", above, our 5-letter words would be: "homos humor mohur", since these these use both M and H.

There is also a command-line switch (-c) to produce "single-column" mode, rather than nicely printing results, as shown above. For our same query, this would return:

mushroom
humors
mohurs
hommos
humor
mohur
homos
moors
rooms
hours

This output is useful for feeding to other programs/filters.

Dictionaries

Anagrammer does not come with any real dictionaries; instead, you must create these.

In order to find anagrams efficiently, it must precompute an anagram dictionary from a list of words. You can do this as:

$ anagrammer --create /path/to/list/of/words/foo

Which creates foo.anagram, stored in /usr/local/share/games/anagrammer. You can change the dictionary path by editing the config.py.

A suitable dictionary to use would be the one that ships with most Linux/Unix systems, usually found at /usr/share/dict/words. An excellent set of much more comprehensive dictionaries are at http://personal.riverusers.com/~thegrendel/software.html

If you cannot find a dictionary, or just want to play with anagrammer, a play dictionary is included, "mini.lst.gz". This contains words starting with a, b, or c, that are 3-7 characters long. You can convert it with:

$ anagrammer --create mini.gz

Which will create a dictionary called "mini" in the above directory.