language ESSENCE 1.2.0
$ prob110.essence: Peaceably Co-existing Armies of Queens
$ Problem details available in:
$ Models and Symmetry Breaking for `Peaceable Armies of Queens'
$ B. M. Smith, K. E. Petrie, I. P. Gent.
$ Proc. First International Conference on Integration of AI and OR Techniques
$ in Constraint Programming for Combinatorial Optimization Problems (CPAIOR
$ 2004), LNCS 3011, pp. 271-286, 2004.
$ 26 July 2007
$ n: the side length of the board
given n : int(1..)
$ Index: square indicies can be between 1 and n on both axes
$ Square: a square is a tuple made up of two elements, an x-index and a y-index
letting Index be domain int(1..n),
Square be domain tuple (Index,Index)
$ black: the set of squares that contain a black queen
$ white: the set of squares that contain a white queen
find black, white : set of Square
$ maximise the number of squares that contain queens
maximising |black| + |white|
$ there are an equal number of black and white queens on the board
|black| = |white|,
$ no row/column/diagonal has both black and white queens on it
forAll (rb,cb) in black . forAll (rw,cw) in white .
(rb != rw) /\ (cb != cw) /\ (|rw - rb| != |cw - cb|)