Вычислить сумму списков на Prolog

В этой теме 1 ответ, 2 участника, последнее обновление 3 года/лет, 11 мес. назад.

  • Автор
    Сообщения
  • #1789
    @questioner

    написать на SWI Prolog процедуру add(List1, List2, List3), которая по заданным спискам целых чисел List1 и List2 одинаковой длины строит новый список List3 (той же длины), содержащий суммы элементов исходных списков.

  • #1790
    @admin

    add([Head1|Tail1], [Head2|Tail2], [SumHead|SumTail]):-
      SumHead is Head1 + Head2,
      add(Tail1, Tail2, SumTail).
    add(_, _, []).

    От обоих исходный списков отделяются первые элементы, вычисляется их сумма. К результату рекурсивной обработке остальных элементов добавляется вычисленная сумма. Если отделить от списков первые элементы не получилось, функция возвращает пустой список сне зависимости от содержимого исходных списков (они могут быть разной длины).

Для ответа в этой теме необходимо авторизоваться.