Самый большой пробел элементов в списке, Пролог - PullRequest
0 голосов
/ 21 мая 2018

Как определить предикат, например, разрыв (+ List, + A, -Output).A является элементом в List, и нам нужно найти другой элемент B в List, и abs (BA) больше, чем любые другие элементы (с именем C), которые делают abs (CA), и на выходе получается abs (BA).Я понятия не имею, как это сделать.

1 Ответ

0 голосов
/ 21 мая 2018

Некоторые предикаты, которые стоит изучить: maplist/3, select/3, forall/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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...