Magazines often set puzzles for their readers and a very popular puzzle is the word search. A grid contains several words hidden within it, spelled horizontally, diagonally, and vertically, forward and backward. The solver must locate all the words listed below the grid.
Write a program that will allow a user to enter a number of word clues, and then produce the grid. Your algorithm must allow for all directions and spelling options. It must fill in the open spaces with random letters.
When the grid has been built, allow a second user to complete the grid. The user can highlight the relevant words, and the computer can check it. Also, allow the designer of the grid to create a printed copy.