valid_queen((Row, Col)) :-
Range = [1,2,3,4,5,6,7,8],
member(Row, Range), member(Col, Range).
valid_board([]).
valid_board([Head|Tail]) :- valid_board(Head), valid_board(Tail).
rows([],[]).
rows([(Row, _)|QueensTail], [Row|RowsTail]) :-
rows(QueensTail, RowsTail).
cols([],[]).
cols([(_, Col)|QueensTail], [Col|ColsTail]) :-
rows(QueensTail, ColsTail).
diagsl([],[]).
diagsl([(Row, Col)|QueensTail], [Diagonal|DiagonalsTails]) :-
Diagonal is Col - Row,
diagsl(QueensTail, DiagonalsTails).
1
diags2([], []).
diags2([(Row, Col)|QueensTail], [Diagonal|DiagonalsTails]) :-
Diagonal is Col + Row,
diags2(QueensTail, DiagonalsTails).
eight_queens(Board) :-
length(Board, 8),
valid_board(Board),
rows(Board, Rows),
cols(Board, Diagonal),
diagsl(Board, Diagsl),
diags2(Board, Diags2).
fd_all_different(Rows),
fd_all_different(Cols),
fd_all_different(Diagsl),
fd_all_different(Diags2).
八皇后问题
最新推荐文章于 2023-07-07 14:04:01 发布