Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/google-chrome/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Prolog中查找列表的最小值和最大值_Prolog - Fatal编程技术网

在Prolog中查找列表的最小值和最大值

在Prolog中查找列表的最小值和最大值,prolog,Prolog,下面是我的程序。 个别地。。。。max和min函数可以工作,但是当我使用minmax组合它们时,它抛出了错误 max([H|T], M) :- max(T, H, M). max([], M, M). max([H|T], Y, M) :- H =< Y, max(T, Y, M). max([H|T], Y, M) :- H > Y, max(T, H, M). max([H | T],M):-max(T,H,M)。 最大值([],米,米)。 max([H | T],Y,

下面是我的程序。 个别地。。。。max和min函数可以工作,但是当我使用minmax组合它们时,它抛出了错误

max([H|T], M) :- max(T, H, M).

max([], M, M).
max([H|T], Y, M) :- H =< Y, max(T, Y, M).
max([H|T], Y, M) :- H > Y, max(T, H, M).   
max([H | T],M):-max(T,H,M)。
最大值([],米,米)。
max([H | T],Y,M):-H=Y,最大值(T,H,M)。
在此之前,max代码单独工作

min([H|T], M) :- min(T, H, M).% \+ means "not"     //// min code starts

min([], M, M).
min([H|T], Y, M) :- H =< Y, min(T, H, M).
min([H|T], Y, M) :- H > Y, min(T, Y, M).      /// till here min code works

minmax([H|T],[max(T,H,M),min(T,H,M)]).     /// this is statetment with problem
min([H | T],M):-min(T,H,M)。%\+表示“不”////min代码开始
最小值([],M,M)。
min([H | T],Y,M):-H=Y,min(T,Y,M)。///直到这里,代码才起作用
最小最大值([H | T],[max(T,H,M),min(T,H,M)])。///这是有问题的陈述

现在@Lougler已经解决了您的错误。我在这里只是想展示library(aggregate)如何解决您的需求:

?- aggregate((min(C),max(C)),member(C,[3,6,2,6,1,9,2]),R).
R =  (1, 9).

在Prolog中,谓词的行为与函数不同。因此
[max(T,H,M),min(T,H,M)]
不会将
min
max
作为函数和返回值执行。。您需要:
minmax(List,Min,Max):-Min(List,Min),Max(List,Max)。