Nonogram Class Reference
[Example scripts (models)]
Example: Nonogram More...
Public Types | |
| enum | { BRANCH_NONE, BRANCH_AFC } |
Public Member Functions | |
| Nonogram (const SizeOptions &opt) | |
| Construction of the model. | |
| Nonogram (Nonogram &s) | |
| Constructor for cloning s. | |
| virtual Space * | copy (void) |
| Copy space during cloning. | |
| virtual void | print (std::ostream &os) const |
| Print solution. | |
Protected Member Functions | |
| int | width (void) const |
| Return width of board. | |
| int | height (void) const |
| Return height of board. | |
| DFA | line (int &spos) |
| Returns next regular expression for line starting from spos. | |
Protected Attributes | |
| const int * | spec |
| Specification to be used. | |
| BoolVarArray | b |
| Fields of board. | |
Picture specifications | |
A specification is given by a list of integers. The first two integers (w and h) specify the number of columns and rows respectively. Then w + h groups of integers follows. Each group is started by the number of integers it contains (n), followed by n integers specifying the sizes of the stretches of markers in that row/column. | |
| const int | heart [] |
| Specification for a heart-shaped picture. | |
| const int | bear [] |
| Specification for a bear/bunny-shaped picture. | |
| const int | crocodile [] |
| Specification for a crocodile-shaped picture. | |
| const int | unknown [] |
| Specification for an unknown picture. | |
| const int | pinwheel [] |
| Specification for a pinwheel-picture. | |
| const int | difficult [] |
| Specification for a more difficult picture. | |
| const int | non_unique [] |
| Specification for a non-unique picture. | |
| const int | dragonfly [] |
| Specification for a dragonfly-picture. | |
| const int | castle [] |
| From http://www.cs.kuleuven.be/~bmd/nonogram.pl. | |
| const int | p200 [] |
| Specification for a picture of cupid. | |
| const int | webpbn436 [] |
| Petro. | |
| const int | webpbn21 [] |
| Skid. | |
| const int | webpbn27 [] |
| Bucks. | |
| const int | webpbn1 [] |
| Dancer. | |
| const int | webpbn6 [] |
| Cat. | |
| const int | webpbn23 [] |
| Edge. | |
| const int | webpbn16 [] |
| Knot. | |
| const int | webpbn529 [] |
| Swing. | |
| const int | webpbn65 [] |
| Mum. | |
| const int * | specs [] |
| Specification for a heart-shaped picture. | |
| const unsigned | n_examples = sizeof(specs)/sizeof(int*) |
| Specification for a heart-shaped picture. | |
Detailed Description
Example: Nonogram
This example solves nonograms. A nonogram is composed of a matrix of markers. For each row/column there is a specification on how many groups of markers (separated by one or more unmarked spots) and their length. The objective is to find a valid assignment, which incidentally may also produce a pretty picture.
See problem 12 at http://www.csplib.org/.
Note that "Modeling and Programming with Gecode" uses this example as a case study.
Definition at line 67 of file nonogram.cpp.
Member Enumeration Documentation
| anonymous enum |
Definition at line 101 of file nonogram.cpp.
Constructor & Destructor Documentation
| Nonogram::Nonogram | ( | const SizeOptions & | opt | ) | [inline] |
Construction of the model.
Definition at line 107 of file nonogram.cpp.
| Nonogram::Nonogram | ( | Nonogram & | s | ) | [inline] |
Constructor for cloning s.
Definition at line 170 of file nonogram.cpp.
Member Function Documentation
| int Nonogram::width | ( | void | ) | const [inline, protected] |
Return width of board.
Definition at line 75 of file nonogram.cpp.
| int Nonogram::height | ( | void | ) | const [inline, protected] |
Return height of board.
Definition at line 79 of file nonogram.cpp.
| DFA Nonogram::line | ( | int & | spos | ) | [inline, protected] |
Returns next regular expression for line starting from spos.
Definition at line 84 of file nonogram.cpp.
| virtual Space* Nonogram::copy | ( | void | ) | [inline, virtual] |
Copy space during cloning.
Definition at line 176 of file nonogram.cpp.
| virtual void Nonogram::print | ( | std::ostream & | os | ) | const [inline, virtual] |
Print solution.
Reimplemented from Gecode::Driver::ScriptBase< BaseSpace >.
Definition at line 182 of file nonogram.cpp.
Friends And Related Function Documentation
const int heart[] [related] |
{ 9, 9,
1, 3,
2, 2, 3,
2, 2, 2,
2, 2, 2,
2, 2, 2,
2, 2, 2,
2, 2, 2,
2, 2, 3,
1, 3,
2, 2, 2,
2, 4, 4,
3, 1, 3, 1,
3, 2, 1, 2,
2, 1, 1,
2, 2, 2,
2, 2, 2,
1, 3,
1, 1
}
Specification for a heart-shaped picture.
Definition at line 231 of file nonogram.cpp.
const int bear[] [related] |
{ 13, 8,
1, 2,
2, 2, 1,
2, 3, 2,
1, 6,
2, 1, 4,
1, 3,
1, 4,
1, 4,
1, 4,
1, 5,
1, 4,
2, 1, 3,
1, 2,
1, 1,
1, 2,
2, 4, 4,
1, 12,
1, 8,
1, 9,
2, 3, 4,
2, 2, 2
}
Specification for a bear/bunny-shaped picture.
Definition at line 256 of file nonogram.cpp.
const int crocodile[] [related] |
{ 15, 9,
1, 3,
1, 4,
2, 2, 2,
2, 3, 1,
2, 2, 3,
2, 3, 2,
2, 2, 3,
2, 4, 2,
2, 3, 2,
1, 6,
2, 1, 3,
2, 1, 3,
2, 1, 4,
1, 5,
1, 5,
1, 3,
3, 2, 3, 2,
2, 10, 3,
1, 15,
5, 1, 1, 1, 1, 6,
2, 1, 7,
2, 1, 4,
2, 1, 4,
1, 4
}
Specification for a crocodile-shaped picture.
Definition at line 284 of file nonogram.cpp.
const int unknown[] [related] |
{ 10, 10,
1, 3,
2, 2, 1,
2, 2, 2,
2, 2, 1,
3, 1, 2, 1,
2, 1, 1,
3, 1, 4, 1,
3, 1, 1, 2,
2, 3, 1,
1, 4,
1, 3,
2, 2, 1,
2, 1, 1,
2, 1, 4,
4, 1, 1, 1, 1,
4, 2, 1, 1, 1,
3, 2, 1, 1,
2, 1, 2,
2, 2, 3,
1, 3
}
Specification for an unknown picture.
Definition at line 315 of file nonogram.cpp.
const int pinwheel[] [related] |
{ 6, 6,
2, 1, 2,
1, 1,
1, 2,
1, 2,
1, 1,
2, 2, 1,
2, 2, 1,
1, 1,
1, 2,
1, 2,
1, 1,
2, 1, 2
}
Specification for a pinwheel-picture.
Definition at line 342 of file nonogram.cpp.
const int difficult[] [related] |
Specification for a more difficult picture.
Definition at line 361 of file nonogram.cpp.
const int non_unique[] [related] |
Specification for a non-unique picture.
Definition at line 398 of file nonogram.cpp.
const int dragonfly[] [related] |
Specification for a dragonfly-picture.
From http://www.oberlin.edu/math/faculty/bosch/pbn-page.html, where it is claimed that it is hard.
Definition at line 435 of file nonogram.cpp.
const int castle[] [related] |
From http://www.cs.kuleuven.be/~bmd/nonogram.pl.
Definition at line 482 of file nonogram.cpp.
const int p200[] [related] |
Specification for a picture of cupid.
From http://www.icparc.ic.ac.uk/eclipse/examples/nono.ecl.txt, the hardest instance.
Definition at line 589 of file nonogram.cpp.
const int webpbn436[] [related] |
Petro.
Definition at line 650 of file nonogram.cpp.
const int webpbn21[] [related] |
Skid.
Definition at line 732 of file nonogram.cpp.
const int webpbn27[] [related] |
Bucks.
Definition at line 778 of file nonogram.cpp.
const int webpbn1[] [related] |
{ 5, 10,
2, 2, 1,
3, 2, 1, 3,
1, 7,
2, 1, 3,
2, 2, 1,
1, 2,
2, 2, 1,
2, 1, 1,
1, 3,
2, 1, 1,
2, 1, 1,
1, 2,
2, 1, 1,
2, 1, 2,
1, 2,
}
Dancer.
Definition at line 835 of file nonogram.cpp.
const int webpbn6[] [related] |
Cat.
Definition at line 857 of file nonogram.cpp.
const int webpbn23[] [related] |
{ 10, 11,
1, 1,
1, 3,
1, 1,
2, 2, 2,
1, 2,
1, 4,
1, 1,
1, 3,
1, 3,
1, 1,
1, 1,
1, 3,
1, 1,
1, 2,
1, 1,
1, 3,
1, 3,
1, 1,
1, 2,
1, 2,
1, 4,
}
Edge.
Definition at line 904 of file nonogram.cpp.
const int webpbn16[] [related] |
Knot.
Definition at line 932 of file nonogram.cpp.
const int webpbn529[] [related] |
Swing.
Definition at line 1007 of file nonogram.cpp.
const int webpbn65[] [related] |
Mum.
Definition at line 1105 of file nonogram.cpp.
const int* specs[] [related] |
const unsigned n_examples = sizeof(specs)/sizeof(int*) [related] |
Specification for a heart-shaped picture.
Definition at line 1200 of file nonogram.cpp.
Member Data Documentation
const int* Nonogram::spec [protected] |
Specification to be used.
Definition at line 70 of file nonogram.cpp.
BoolVarArray Nonogram::b [protected] |
Fields of board.
Definition at line 72 of file nonogram.cpp.
The documentation for this class was generated from the following file:
- examples/nonogram.cpp
