他们让我在PROLOG中执行下面的程序,但是因为我对这门语言有点缺乏经验,所以我一直很难执行每个国家最大和最小人口的操作,以及最大的领土,它比较变量的预定义值但是,我认为这样做是不正确的,而是有必要对领土知识库的值进行排序并显示最大国家的名称并从那里最小的国家的名字,但在条件分开。
在这里,我提前附上我的代码,非常感谢您抽出时间回复。
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% PROLOG BASE DE CONOCIMIENTO PAÍSES %
% V 0.1 %
% 01/10/2018 %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%Planteamiento del problema ---------------------------------------------------------------
%Se tienen en una base de conocimiento los países de América del Norte y América Central.
% de los cuales se quiere conocer:
% 1.- Su Territorio el Mayor Territorio y el menor territorio de todos los países de la
% base de conocimiento.
% 2.- Con que países tienen fronteras los países de la base de conocimiento.
% 3.- El tamaño de la población entre los cuales dar el menor y mayor país con población.
%Base de conocimiento General.
pais(mexico).
pais(estados_unidos).
pais(canada).
pais(belize).
pais(honduras).
pais(guatemala).
pais(nicaragua).
pais(panama).
pais(costa_rica).
pais(el_salvador).
%Colindancias.
vecino(mexico,estados_unidos).
vecino(mexico,belize).
vecino(mexico,guatemala).
vecino(estados_unidos,mexico).
vecino(estados_unidos,canada).
vecino(canada,estados_unidos).
vecino(guatemala,belize).
vecino(guatemala,mexico).
vecino(guatemala,honduras).
vecino(guatemala,el_salvador).
vecino(belize,guatemala).
vecino(belize,mexico).
vecino(honduras,guatemala).
vecino(honduras,el_salvador).
vecino(honduras,nicaragua).
vecino(el_salvador,honduras).
vecino(el_salvador,guatemala).
vecino(nicaragua,honduras).
vecino(nicaragua,costa_rica).
vecino(costa_rica,nicaragua).
vecino(costa_rica,panama).
vecino(panama,costa_rica).
%funcion de fronteras
colindancias(X,Y):-vecino(X,Y).
%Tamaño del Territorio
territorio(mexico,1964375).
territorio(estados_unidos,9147593).
territorio(canada,9984670).
territorio(belize,22966).
territorio(honduras,112492).
territorio(guatemala,108889).
territorio(nicaragua,130373).
territorio(panama,75420).
territorio(costa_rica,51100).
territorio(el_salvador,21041).
%Tamaño de la poblacion.
pob(mexico,120437599).
pob(estados_unidos,320344593).
pob(canada,37067013).
pob(belize,380010).
pob(honduras,9126789).
pob(guatemala,17382396).
pob(nicaragua,6279344).
pob(panama,4158023).
pob(costa_rica,5003000).
pob(el_salvador,7415233).
%Condiciones sobre el menor o mayor territorio.
%al parecer si agrego el el > no me itera el ciclo y no arroja ningún valor
%al igual con el < no funciona
mayorTerr(X):-M = 32034459,territorio(X,M).
menorTerr(X):-L = 22966,territorio(X,L).
%Condiciones de Poblacion.
mayorpob(X):-M=320344593,pob(X,M).
menorpob(X):-L=380010,pob(X,L).
您必须首先定义一个谓词来查找元组列表中的最大元素,第二个元素是我们将用于比较的元素。列表中只有一个元素的最大元素就是该元素。
H
带头和尾的列表T
的最大元素是 之间的最大元素H
和 的最大元素T
:例如:
现在,要找到人口最多的国家,您必须获取所有国家及其人口的列表,并使用谓词搜索最大的元素
max/2
:在这种情况下,它会
findall/3
找到所有(A,B)
满足目标的对pob(A,B)
,并将它们存储在列表中L
。您可以类似地定义其余谓词。