Предикат. Сумма элементов двух списков наиболее близка к заданному чилу - Prolog

Узнай цену своей работы

Формулировка задачи:

p(X, Y, Q, -S) X и Y - упорядоченные по возрастанию списки, Q - число Предикат истинный тогда и только тогда, когда S есть сумма вида xi+yj, наиболее близкая к числу Q. Собственно задача была реализована ее в 2010 году, но мне кажется решение не верное. x [1,2,3] y [1,2,3] Q 2 false Непонятно, что делает данный код.
Листинг программы
  1. p(ListX, ListY, Q, S):-setof(D, dif(ListX, ListY, Q, D), [MinDif|_]),
  2. member(X, ListX), member(Y, ListY), S is X+Y,
  3. (S >= Q, MinDif=:=S-Q; S<Q, MinDif=:=Q-S). /*что происходит в данной строчке, а именно что означает MinDif=:=S-Q;*/
  4. dif(ListX, ListY, Q, D):-member(X, ListX), member(Y, ListY),
  5. S is X+Y,(S>=Q, D is S-Q ; S<Q, D is Q-S).
Как можно по другому реализовать данную задачу

Решение задачи: «Предикат. Сумма элементов двух списков наиболее близка к заданному чилу»

textual
Листинг программы
  1. S = X+Y

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

14   голосов , оценка 4.143 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы