Crossword Utilities: A PD Package Announcement
    By Timothy Swenson

This past summer my wife, Catherine, decided to take up solving
the "Bonus" crossword puzzle published in the local paper.  She
tried the New York Times puzzle, but it turned out to be harder
than she liked.  To help her solve the puzzle, she starting
typing in past crossword clues and answers into Archive.  She
then sorted them and printed them out and used them to solve the
future puzzles.  She started to nice that "Bonus" reused the same
clues over and over, making the puzzle easier and easier to
solve.  Soon she has over 4,600 entries in the database.

Once she built a fairly big database, I realized that this
database might be usefull to other QL users that solve crossword
puzzles.  I started to think what else would be usefull to solve
crossword puzzles.

I like to solve them by trying to fill in as many answers as I
can and then use these answers to help with the other words.  I
find myself constantly saying something like, "What is a 3 letter
word for _____ that ends with D."  Having a book like "20,000
Words" or a dictionary is usefull, only if you know what the word
starts with.  I wanted a way to search a dictionary without
knowing the beginning of the word.  First, I had to create a
dictionary.  Using the answers stored in the "Bonus" crossword
database, I added the /usr/dict/words dictionary file available
on most Unix systems.  After some massaging, I had the dictionary
I needed.  The dictionary file has about 25,000 words.

Next came the search engine to work on the database.  I started
thinking about how I would write a search engine, when I realized
that one, this is going to be harder than I thought, and second,
why reinvent the wheel.  A version of 'grep' had ben ported over
to the QL and came with the C68 distribution.  Grep is a
pattern-matching program from Unix that is very usefull for
searching large files for occurances of a word or phrase.  Grep
is not easy to use, so I decided to come up with a SuperBasic
program to work as a front-end to grep, plus I figured out how to
get grep to search for words of a certain length.  Searching the
database is as simple of this:

   "What 5 letters words have the 2nd letter as R and end in T."
You would use the string ".R..T" in the search.  Use use periods
(.) as unknown letters.  

Searching the Archive database of clues can be done using the
Archive commands SEARCH and FIND.  Refer to your Archive manual
for the details on these commands.

Now that all of this is complete, I am making the database,
dictionary file, grep, and the front-end programs available as a
Public Domain distribution as the file Xword_zip.  Look for it on
a BBS server or Internet FTP server near you.


               (                   (