당해봐랏! ㅋㅋ


eight_queens([], _).

eight_queens([X/Y | Others], ValidYs) :-

eight_queens(Others, ValidYs),

member(Y, ValidYs),

safe_position(X/Y, Others).


eight_queens(XYs) :-

numlist(1, 8, Ys),

eight_queens(XYs, Ys).


safe_pos(_,[]).

safe_pos(X/Y, [X1/Y1 | Others]) :-

Y =\\= Y1,

Y1 - Y =\\= X1 - X,

Y1 - Y =\\= X - X1,

safe_pos(X/Y, Others).




?- eight_queens([1/Y1, 2/Y2, 3/Y3, 4/Y4, 5/Y5, 6/Y6, 7/Y7, 8/Y8]).
Y1 = 4,
Y2 = 2,
Y3 = 7,
Y4 = 3,
Y5 = 6,
Y6 = 8,
Y7 = 5,
Y8 = 1 ;
Y1 = 5,
Y2 = 2,
Y3 = 4,
Y4 = 7,
Y5 = 3,
Y6 = 8,
Y7 = 6,
Y8 = 1

?-