Example: Crossword puzzle More...
Public Types | |
enum | { MODEL_ELEMENT , MODEL_TUPLESET } |
Which model to use. More... | |
enum | { BRANCH_WORDS_AFC , BRANCH_LETTERS_AFC , BRANCH_LETTERS_AFC_ALL , BRANCH_WORDS_ACTION , BRANCH_LETTERS_ACTION , BRANCH_LETTERS_ACTION_ALL , BRANCH_WORDS_CHB , BRANCH_LETTERS_CHB , BRANCH_LETTERS_CHB_ALL } |
Branching to use for model. More... | |
Public Member Functions | |
Crossword (const SizeOptions &opt) | |
Actual model. | |
bool | master (const MetaInfo &mi) |
Do not perform a restart when a solution is found. | |
Crossword (Crossword &s) | |
Constructor for cloning s. | |
virtual Space * | copy (void) |
Copy during cloning. | |
virtual void | print (std::ostream &os) const |
Print solution. | |
![]() | |
ScriptBase (const Options &opt) | |
Constructor. | |
ScriptBase (ScriptBase &e) | |
Constructor used for cloning. | |
virtual void | compare (const Space &home, std::ostream &os) const |
Compare with s. | |
Static Public Member Functions | |
static void | printletters (const Space &home, const Brancher &, unsigned int a, IntVar, int i, const int &n, std::ostream &os) |
Print brancher information when branching on letters. | |
static void | printwords (const Space &, const Brancher &, unsigned int a, IntVar, int i, const int &n, std::ostream &os) |
Print brancher information when branching on words. | |
![]() | |
static std::ostream & | select_ostream (const char *sn, std::ofstream &ofs) |
Choose output stream according to sn. | |
template<class Script , template< class > class Engine, class Options > | |
static void | run (const Options &opt, Script *s=NULL) |
Protected Attributes | |
const int | w |
Width of crossword grid. | |
const int | h |
Height of crossword grid. | |
IntVarArray | letters |
Letters for grid. | |
Related Symbols | |
(Note that these are not member symbols.) | |
int | main (int argc, char *argv[]) |
Main-function. | |
Example: Crossword puzzle
Fill crossword grids with words, that is construct a crossword puzzle. For a recent paper on this classical problem, see: Crossword Puzzles as a Constraint Problem, Anbulagan and Adi Botea, CP 2008, pages 550-554, Springer Verlag.
Note that "Modeling and Programming with Gecode" uses this example as a case study.
Definition at line 66 of file crossword.cpp.
anonymous enum |
Which model to use.
Enumerator | |
---|---|
MODEL_ELEMENT | Use element constraints per letter. |
MODEL_TUPLESET | Use one tuple-set per word. |
Definition at line 76 of file crossword.cpp.
anonymous enum |
Branching to use for model.
Definition at line 81 of file crossword.cpp.
|
inline |
Actual model.
Definition at line 93 of file crossword.cpp.
|
inline |
Constructor for cloning s.
Definition at line 294 of file crossword.cpp.
|
inlinestatic |
Print brancher information when branching on letters.
Definition at line 265 of file crossword.cpp.
|
inlinestatic |
Print brancher information when branching on words.
Definition at line 276 of file crossword.cpp.
|
inline |
Do not perform a restart when a solution is found.
Definition at line 285 of file crossword.cpp.
|
inlinevirtual |
Copy during cloning.
Definition at line 300 of file crossword.cpp.
|
inlinevirtual |
Print solution.
Reimplemented from Gecode::Driver::ScriptBase< BaseSpace >.
Definition at line 305 of file crossword.cpp.
|
related |
Main-function.
Definition at line 329 of file crossword.cpp.
|
protected |
Width of crossword grid.
Definition at line 69 of file crossword.cpp.
|
protected |
Height of crossword grid.
Definition at line 71 of file crossword.cpp.
|
protected |
Letters for grid.
Definition at line 73 of file crossword.cpp.