tasks a-s
This commit is contained in:
parent
47bf37c096
commit
b83f433714
12433 changed files with 156208 additions and 123 deletions
28
Task/N-queens-problem/Prolog/n-queens-problem-2.pro
Normal file
28
Task/N-queens-problem/Prolog/n-queens-problem-2.pro
Normal file
|
|
@ -0,0 +1,28 @@
|
|||
solution(Queens) :-
|
||||
permutation([1,2,3,4,5,6,7,8], Queens),
|
||||
safe(Queens).
|
||||
|
||||
permutation([],[]).
|
||||
|
||||
permutation([Head|Tail],PermList) :-
|
||||
permutation(Tail,PermTail),
|
||||
del(Head,PermList,PermTail).
|
||||
|
||||
del(Item,[Item|List],List).
|
||||
|
||||
del(Item,[First|List],[First|List1]) :-
|
||||
del(Item,List,List1).
|
||||
|
||||
safe([]).
|
||||
|
||||
safe([Queen|Others]) :-
|
||||
safe(Others),
|
||||
noattack(Queen,Others,1).
|
||||
|
||||
noattack(_,[],_).
|
||||
|
||||
noattack(Y,[Y1|Ylist],Xdist) :-
|
||||
Y1-Y=\=Xdist,
|
||||
Y-Y1=\=Xdist,
|
||||
Dist1 is Xdist + 1,
|
||||
noattack(Y,Ylist,Dist1).
|
||||
Loading…
Add table
Add a link
Reference in a new issue