Word-search Puzzle Editor

Write a program that will be used for easy creation of word-search puzzles. You should implement following functions in given order:

  1. Selection of puzzle dimensions (number of columns and rows) and drawing of editing canvas.
  2. Word list. Your program allows the user to add words from keyboard. These words can be later used in the word-search puzzle.
  3. Puzzle editing. The user will be able to select a word from the list and then place it into the puzzle.
  4. Import of words from a text file. Your program will be able to add all words from the user-selectable text file into the word list.
  5. Automatic word placement. After selecting a word from the list, program will automatically place it into the puzzle. If there are several suitable places, the user should have opportunity to manually select one of the possibilities.
  6. Displaying number of free fields in puzzle.
  7. Light (quip) completion. The user will be able to enter the light (it means text which is found when you exclude all words placed in the puzzle). If there is exactly the same number of free positions in the puzzle as letters in the light, program will automatically fill rest of the puzzle with light.
  8. Saving of puzzle to file. Once created puzzle can be stored in a text file. Every row of puzzle is stored as separate row in the file. Under puzzle there will be one empty line followed by alphabetically ordered list of used words.
  9. Automatic puzzle generator. Program will automatically build a puzzle after entering its dimensions, light and list of words to use.
  10. Game mode. In this mode program should allow the user to load an already designed puzzle from file and interactively solve it.

Notes

You must implement above described functions incrementally. If you would not solve some subtask, following tasks would not be evaluated by jury.

By word we mean sequence of English letters.

If you have never seen a word-search puzzle before, take a look at the example at the end of this paper. You can inspire yourself by the program "100 % Word Search Free". This free-software is installed in your machine and implements some functions from this task.

Your program and all its modules should be stored in the directory C:\ICP. Name the modules in such way that the two first letters of its name are your starting number.

Write your starting number, a list of all used modules and numbers of solved subtasks as a comment at the beginning of the program.

There are several files in the directory C:\DATA. These files are examples of word lists and designed puzzles. You can use them for testing.

The permitted aid is English vocabulary, books that describe programming language, its environment (IDE) and standard libraries. You must not use books with descriptions of various methods, algorithms and data structures.

You can get total of 100 points. 60 out of them are used for evaluating functionality, 30 for evaluating efficiency (smart and fast algorithms, sophisticated data structures). Last ten points are used for documentation (notes about running and using your program, descriptions of algorithm, comments, naming convention, neat way of writing code).

Example

Dimensions: 6 3
Word list: HIT
TURTLE
ONE
HOME
HI
HER
Light: ICP
Word-search puzzle:
H I H O M E
I I E C N P
T U R T L E
Solved puzzle game: Example solved puzzle
Text-file representation:
HIHOME
IIECNP
TURTLE

HER
HI
HIT
HOME
ONE
TURTLE
Note: It is legal to use all 8 directions in the puzzle (N, E, S, W, NE, SE, SW, NW).