列表中元素的最大差距,Prolog

时间:2018-05-21 11:10:20

标签: prolog

如何确定谓词,如gap(+ List,+ A,-Output)。 A是List中的元素,我们需要在List中找到另一个元素B,并且abs(B-A)比任何其他元素(命名为C)都大于abs(C-A),并且输出是abs(B-A)。我不知道该怎么做。

1 个答案:

答案 0 :(得分:0)

有些谓词值得学习:maplist/3select/3forall/2

gap(List, A, Output) :-
    maplist([X,Y] >> (Y is abs(X-A)), List, Diffs),  % make a list of abs diffs
    select(Output, Diffs, Others),                   % select a diff
    forall(member(Other, Others), Output >= Other).  % check that is maximum

?- gap([1,10,50,100,120], 50, X).
X = 70