Files
kerolox/examples/NQueens.rp1
2026-04-15 11:33:55 -06:00

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.