Erlang,列出:找到最大限度由乐趣定义的元素

时间:2011-01-21 17:16:47

标签: list erlang

lists模块提供了一个函数来查找列表的最大值lists:max(List)

是否有像lists:maxfun(Fun, List)这样的功能?给定的乐趣应该用于所有元素,maxfun应该返回此元素而不是值。例如:

Fun gets [X,Y] and calcs X+Y
lists:maxfun(Fun,[[1,1],[1,2]]} -> [1,2].

2 个答案:

答案 0 :(得分:4)

你可以使用这个技巧:

1> F=fun([X,Y]) -> X+Y end.                                  
#Fun<erl_eval.6.13229925>
2> element(2, lists:max([ {F(X), X} || X <- [[1,1],[1,2]]])).
[1,2]

答案 1 :(得分:1)

您可以使用list:foldl,类似这样:

lists:foldl(fun([X1,Y1],[X2,Y2]) when X1 + Y1 > X2 + Y2 ->
                [X1,Y1];
               (_, Acc) ->
                 Acc
            end, [0,0], ListOfLists).
相关问题