Name: Crossword Puzzle Generator
Programmers: Darren Cheng and Nimit Dhulekar
A crossword is a word puzzle that normally takes the form of a square or rectangular grid
of black and white squares. The goal is to fill the white squares with letters, forming
words or phrases, by solving clues that lead to the answers. Squares in which words begin
are numbered. The clues are then referred to by these numbers and a direction, for
example ‘4 Down’ or ‘2 Across’. The main goal of this project is to emulate a
constructor or setter and “compile” crossword puzzles. This crossword puzzle generator
would generate British-style puzzles, which are 15x15 grids with a lattice-like structure,
with a higher percentage of black squares compared to the American-style puzzles,
leaving up to half the letters in the answers unchecked. The construction of crossword
puzzles is a NP-complete problem.
Using java as the programming language, we would design a program that would output
a solved British-style crossword.
1) Create set of empty 15x15 British-style crossword puzzle boards. The board does not
have words in it, but has place markers for words already in place.
2) Compile a word list.
3) Figure out which words will fill the crossword puzzle. We would use a backtracking
search to determine which word would be the best fit in each of the empty place markers.
4) Generate the solved crossword puzzle.
5) Figure out better algorithms to generate crossword puzzles.
Proposed Extra Work:
-Using a dictionary, generate clues for each word, and print out the clue bank alongside
its corresponding puzzle.
-Design an applet in which a user can interact with the crossword puzzle.
We would obtain a wordlist from an online source yet to be found. If we were to
implement a clue generator, to obtain these clues we would use a dictionary from another
or the same online source.
To determine the progress of the project, we would generate multiple random crossword
puzzles of smaller sizes to check and see if every word in the puzzle was an actual
English word. The final success metric would be a 15x15 board. If we were to generate
clues for every word, we would check to see if every clue correctly matched its
corresponding word. If we were to design an applet for the crossword puzzle, we would
test to see if the crossword puzzle correctly sensed a completed puzzle.
One person would generate the empty boards, compile a wordlist, and generate test cases.
The other person would generate the algorithm to fill the particular empty board with
possible English words from the wordlist.
If we to generate clues for each crossword puzzle, one person would do the mapping
from the clue to the word. The other person would test to see if accurate mapping
If we were to create an applet for the crossword puzzle, one person would design the
applet and the other person would determine if the words inputted by the user are correct.
1. Crosswords, Wikipedia.com. http://en.wikipedia.org/wiki/Crossword
Wikipedia.com. February 24, 2009.