Steve's Agenda Wordsearch Puzzle.

by Steve Baker <steve@sjbaker.org>

Introduction.

Find the following words in the grid below:

     A, C++, COMPILER, IS, NEEDED, IN, ORDER,
     TO, COMPILE, THIS, PROGRAM, BUT, IT,
     SHOULD, RUN, ON, ALMOST, ANY, COMPUTER,
     OR, OPERATING, SYSTEM, INCLUDING, LINUX,
     MICROSOFT, WINDOWS, IRIX, AND, SOLARIS, 
    ============================================

          H N I D A G S M R P N + S E N I
          + R R C H Y S X S C H E N X E N
          Q S I A N M H I H N W S + E R C
          N F X N S B O M S L X N P S S L
          P I Y D E O U O N Y N M A H T U
          C G N T A E L T N O S H P M E D
          S G R I H A D A O H T T S E D I
          O C O M P I L E R U S G E I S N
          O + S T E F S H D I M N P M S G
          O + W E E H S N E A S I N M D S
          C C O M P U T E R L X N R O A N
          W S D A C H S G M U C E R O I E
          M I N S R O O O N S N M + X O E
          G U I O U R M I C R O S O F T A
          L N W I P G L L M G + M M T U S
          S N O P E R A T I N G F R P S F

This program makes wordsearch puzzles like the one above. This version is tuned to run on the Agenda PDA.

Compilation:

Using the mipsel-linux-g++ cross-compiler from a PC:

    gunzip word_search-2.2.tar.gz
    tar xvf word_search-2.2.tar
    make 

You can run it on a regular PC Linux if you compile using 'Makefile.pc':

    gunzip word_search-2.2.tar.gz
    tar xvf word_search-2.2.tar
    make -f Makefile.pc

In either case, you'll need FLTK 1.0.9 or later.

The tarball also contains an XPM icon for wordsearch (thanks for William Kendrick for that...although the Easter Egg it contains is mine :-).

No, I won't provide a binary version, project files and such for any system other than the Agenda PDA - it's just too much hassle.

License:

This program is offered under the terms of the GNU Public License (GPL).

Instructions:

This program reads uppercase words (one per line) from .wordsearch_puzzles. Each puzzle is a list of these words separated by a line of '-' characters. A second file .wordsearch_next tells the program the number of the next puzzle to generate - it's auto-incremented in the program and reset to zero when you've seen them all.

Copy .wordsearch_puzzles from wherever you installed WordSearch into wherever you intend to run it. .wordsearch_next will be created if needed.

After that, just run


    wordsearch

...and the process is entirely automatic.

The program usually manages to fit between 30 and 45 longish words into the 16x16 grid. Since its search for places to put words is somewhat random, it may take many tries to fit them all in.

Obviously, you shouldn't use words that are larger than the grid size.

If it takes more than a minute or so to finish then it's probably never going to find a setup that - so kill the program, delete a word or two and try again. I usually start with about 30 words and add more or take some away until they all fit after a couple of minutes run time.

However, if you really need to get every word of your company's mission statement into the puzzle, you can let it run overnight - who knows you might just get lucky!

How to play:

At the top of the screen, you'll see a list of the words you havn't found yet. You can drag the mouse pointer over that area to scroll it.

So, pick a word to find - when you spot it in the grid, click on the the first and last letters and it'll highlight the word. If you got it right, the word will be displayed in the box at the bottom of the screen.

If you clicked on the first letter of the word and then realise you have it wrong, just click on that letter again to cancel your choice.

Once you've finished the puzzle, the only option is to exit by clicking "DONE".

Hints:

The program tries to maximise the overlap between words - so that the wordsearch will be as tangled as possible. It also prefers to fill up the unused spaces in the grid from letters taken from elsewhere in the grid. That makes it all harder because there tend to be more locations that look like they might be words. However, it does toss in some totally random letters.

Try for some nice long words - seven and eight letter words pack in quite nicely. If you have too few words and/or a grid that's too large, it makes it easy to find all the words once you have located one of them.

You don't have to stick with uppercase A through Z, you can add other printable characters (like the '+' signs in the example above). However, since the program always adds in a bunch of random uppercase characters, this isn't truly ideal.

However, if you are really into such things, you can make 'NumberSearch' and 'RandomGarbageSearch' puzzles.

Changing the Parameters:

Sorry - I'm too lazy to make command line parameters or a menu for such a simple program, so to change it's setup, you have to recompile it.

At present, the program is hardwired to generate a 16x16 grid. However, you can edit the GRID_SIZE definition in the source code to change that.

Also, by default, the program is set up so it won't put the words into the grid backwards (ie running from right to left) of diagonally backwards and up or down).

This behaviour is determined by the constant 'HARDNESS'. Set hardness to 1 and all the words will run strictly from left to right with no diagonals or anything. Increasing hardness to values up to and including 8 will make the words run in increasingly harder to spot directions.


 Hardness   Possible word directions.
    1       EAST
    2       EAST,SOUTH
    3       EAST,SOUTH,SOUTH_EAST
    4       EAST,SOUTH,SOUTH_EAST,NORTH_EAST
    5       EAST,SOUTH,SOUTH_EAST,NORTH_EAST,NORTH
    6       EAST,SOUTH,SOUTH_EAST,NORTH_EAST,NORTH,WEST
    7       EAST,SOUTH,SOUTH_EAST,NORTH_EAST,NORTH,WEST,NORTH_WEST
    8       All Directions.

The default hardness is 6 which prevents words from coming out backwards.