8 queens 3

Description

Program solves 8 queens problem

Source: PROLOG programming for artificial intelligence, 3rd Edition, Harlow, 2001, ISBN 0-201-40375-7.

Download

Program source code: 8_queens_3.pl

Listing

%  Figure 4.7  Program 1 for the eight queens problem.
 
 
% solution( BoardPosition) if
%   BoardPosition is a list of non-attacking queens
 
solution( [] ).
 
solution( [X/Y | Others] )  :-      % First queen at X/Y, other queens at Others
  solution( Others),
  member( Y, [1,2,3,4,5,6,7,8] ),
  noattack( X/Y, Others).           % First queen does not attack others
 
noattack( _, [] ).                  % Nothing to attack
 
noattack( X/Y, [X1/Y1 | Others] )  :-
  Y =\= Y1,                         % Different Y-coordinates
  Y1-Y =\= X1-X,                    % Different diagonals
  Y1-Y =\= X-X1,
  noattack( X/Y, Others).
 
member( Item, [Item | Rest] ).
 
member( Item, [First | Rest] )  :-
  member( Item, Rest).
 
% A solution template
 
template( [1/Y1,2/Y2,3/Y3,4/Y4,5/Y5,6/Y6,7/Y7,8/Y8] ).

Comments

pl/prolog/pllib/8_queens_3.txt · ostatnio zmienione: 2019/06/27 15:50 (edycja zewnętrzna)
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0