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

时间:2017-04-14 06:08:59

标签: prolog

以下是我的计划。 单独....最大和最小功能工作,但当我使用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).   

直到这里最大代码单独工作

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

1 个答案:

答案 0 :(得分:0)

现在@lurker已经解决了你的错误。我在这里只是为了展示库(聚合)如何解决您的需求:

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