Różnice

Różnice między wybraną wersją a wersją aktualną.

 — pl:prolog:pllib:8_queens_3 [2019/06/27 15:50] (aktualna) Linia 1: Linia 1: + ====== 8 queens 3 ====== + {{tag>​puzzle chess}} + ===== 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: {{prolog:​pllib:​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)