solution([]).
solution([X/Y | Others]) :-
solution(Others),
member(Y,[1,2,3,4,5,6,7,8]),
nocheck(X/Y, Others).
nocheck(_, []).
nocheck(X/Y, [X1/Y1 | Others]) :-
Y =\= Y1,
Y1-Y=\=X1-X,Y1-Y=\=X-X1,
nocheck(X/Y, Others).
?- solution([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 ;
以下從略,此為多解
solution([X/Y | Others]) :-
solution(Others),
member(Y,[1,2,3,4,5,6,7,8]),
nocheck(X/Y, Others).
nocheck(_, []).
nocheck(X/Y, [X1/Y1 | Others]) :-
Y =\= Y1,
Y1-Y=\=X1-X,Y1-Y=\=X-X1,
nocheck(X/Y, Others).
?- solution([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 ;
以下從略,此為多解
_________________________
天步占星
天步占星
前一個議題
索引