welcome: please sign in
location: attachment:BlockedNQueens.core.asp.txt of EncodingsExamples

Attachment 'BlockedNQueens.core.asp.txt'

Download

   1 diagX(X,Y,XmY) :- num(X), num(Y), XmY = X - Y.
   2 diagY(X,Y,XpY) :- num(X), num(Y), XpY = X + Y.
   3 
   4 diagXp(D) :- diagX(X,Y,D).
   5 diagYp(D) :- diagY(X,Y,D).
   6 
   7 queen(X,Y) v noQueen(X,Y) :- num(X), num(Y), not block(X,Y).
   8 queen(X,Y) v noQueen(X,Y) :- num(Y), num(X), not block(X,Y).
   9 
  10 % exactly 1 queen in each row/col
  11 :- num(X), not assignedRow(X).
  12 :- num(X), not assignedCol(X).
  13 assignedRow(X):- queen(X,_).
  14 assignedCol(X):- queen(_,X).
  15 :- queen(X,Y), queen(X,Z), Z != Y.
  16 :- queen(X,Y), queen(Z,Y), Z != X.
  17 
  18 % at most 1 queen on each diagonal
  19 :- queen(X,Y), queen(XX,YY), sameDiag(X,Y,XX,YY).
  20 sameDiag(X,Y,XX,YY) :- num(X), num(Y), num(XX), num(YY), num(K), XX = X + K, YY = Y + K.
  21 sameDiag(X,Y,XX,YY) :- num(X), num(Y), num(XX), num(YY), num(K), XX = X + K, YY = Y - K.
  22  

Attached Files

You are not allowed to attach a file to this page.