⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 queens.pro

📁 prolog语言写的一个八皇后问题,程序比较简单,有注释
💻 PRO
字号:
queens(N,Qs):-  
%主程序,先使用range/3生成列表,再使用queens/3来放置皇后。
	range(1,N,Ns),queens(Ns,[],Qs).

queens(UnplacedQs,SafeQs,Qs):- 
% UnplaceQs是还没有放置的皇后,SafeQs是已经放好了的皇后列表。
	delete(Q,UnplacedQs,UnplacedQs1),  
% 首先使用delete/3从UnplaceQs列表中选择一个皇后出来。
	not(attack(Q,SafeQs)), 
% 判断它是否与已经放好了的皇后能够互相攻击,
	queens(UnplacedQs1,[Q|SafeQs],Qs).
% 如果不能攻击,那么就把此皇后放到SafeQs列表中,
% 并且开始选择下一个皇后。

queens([],Qs,Qs). 
% 最后当所有的皇后都放置好了,就把第二个参数传给第三个参数。

range(M,N,[M|Ns]):-
	M<N,M1 is M+1,range(M1,N,Ns).
range(N,N,[N]).

attack(X,Xs):-
	attack(X,1,Xs).

attack(X,N,[Y|Ys]):-
	X is Y+N;X is Y-N.

attack(X,N,[Y|Ys]):-
	N1 is N+1,attack(X,N1,Ys).

delete(A,[A|X],X).
delete(A,[B|X],[B|Y]) :- delete(A,X,Y).

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -