From a133dd637cc34e149eba4c5c8bc16d5b512919f6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gon=C3=A7alo=20S=2E=20Martins?= Date: Wed, 18 May 2016 09:07:34 +0100 Subject: [PATCH] Add readme. --- reame.md | 14 ++++++++++++++ 1 file changed, 14 insertions(+) create mode 100644 reame.md diff --git a/reame.md b/reame.md new file mode 100644 index 0000000..2f0c768 --- /dev/null +++ b/reame.md @@ -0,0 +1,14 @@ +Crossword Generator +=== + +This very simple Python script generates a *clueless* crossword puzzle. It harnesses the capabilities of Python and LaTeX to output the puzzle in a printable PDF. + +Algorithm +--- + +I purposefully designed and implemented this little project without performing research on crossword generation techniques; I wanted to see if I could do it by myself. The very simple algorithm that is implemented here is as follows: + +1. The technique receives a list of words, in a .txt file (I tested using [these](http://www.gwicks.net/dictionaries.htm) lists). +2. A number (100, by default) of words are chosen randomly from the list that is given, and these are the words that will be used hereafter. +3. The technique expands the list of words into a list of possibilities, where each possibility encodes a possible starting location for a word, as well as its direction. This essentially constitutes all possible words that can be placed into the grid. +4. A new word is taken from the list of possibilities and placed on the grid. This makes it so a number of possibilities are now invalid, and these are removed from the list. Steps 3 and 4 are repeated until the grid is as full as we want it to be.