2013-12-16 41 views
1

我有一個列表如下[[_,A,D,_,_],...]。我想找到D等於某個值的最大A。我寫了下面的代碼,但它不起作用。誰能幫忙?列表中最大限制條件

maxL([[_,Max,C,_,_]],C,Max). 
maxL([[_,A,D,_,_]|F],C,Max):- 
    D==C, maxL(F,C,B), Max is max(A,B). 
maxL([[_,_,D,_,_]|F],C,Max):- 
    D>C, maxL(F,C,B), B is Max. 
maxL([[_,_,D,_,_]|F],C,Max):- 
    D<C, maxL(F,C,B), B is Max. 

回答

0

利用圖書館總,很容易

maxL(L, C, Max) :- aggregate_all(max(A), member([_,A,C,_,_], L), Max). 

測試:

1 ?- maxL([[_,1,y,_,_],[_,2,y,_,_],[_,3,n,_,_]], y, M). 
M = 2.