21 lines
626 B
Plaintext
21 lines
626 B
Plaintext
; Each possible coordinate on the board.
|
|
define output Coord Integer
|
|
Coord 1.
|
|
Coord a :- Coord b, b < 8, a = b + 1.
|
|
|
|
; Each possible placement of a queen.
|
|
define output decision Queen(Coord, Coord)
|
|
Queen(row, col) :- Coord row, Coord col.
|
|
|
|
; Exactly one queen goes on each row.
|
|
:- @count col : Queen(row, _) = 1.
|
|
|
|
; Exactly one queen goes on each column.
|
|
:- @count col : Queen(_, col) = 1.
|
|
|
|
; At most one queen can go along each main diagonal.
|
|
:- @count diag : { Queen(row, col), diag = row + col } <= 1.
|
|
|
|
; At most one queen can go along each orthogonal diagonal.
|
|
:- @count diag : { Queen(row, col), diag = row - col } <= 1.
|