Сумма элементов на четных позициях

В этой теме 0 ответов, 1 участник, последнее обновление  Васильев Владимир Сергеевич 1 год, 2 мес. назад.

Просмотр 1 сообщения - с 1 по 1 (всего 1)
  • Автор
    Сообщения
  • #3289

    Нужно выполнить задание на языке Prolog:

    Вычислить сумму элементов списка целых чисел, находящихся на чётных позициях.

    Первый способ решить задачу — извлечь из списка все нужные элементы, смотри «Разделение списка на четные и нечетные по индексу«, а затем использовать предикат для вычисления суммы (sum_list(List, Sum)).

    Другой вариант:

    domains 
    	list = integer*
    predicates
      	odd_sum(list, integer)
    clauses
      	odd_sum([], 0):-!.
      	odd_sum([_], 0):-!.
      	odd_sum([_A, B|Tail], Sum):-
      		odd_sum(Tail, TailSum),
      		Sum = TailSum + B.
    goal
      	odd_sum([1,2,3,4], S).

    Сумма элементов пустого списка равна нулю.
    Если в списке всего один элемент, то он находится на нечетной позиции, следовательно сумма элементов на четных также равна нулю.
    Если в списке два и более элемента, то выбираются два первых (_A, B), остальные обрабатываются рекурсивно — формируется частичный результат (TailSum). Для получения полного результата нужно добавить к частичной сумме значение B.

    odd_sum

Просмотр 1 сообщения - с 1 по 1 (всего 1)

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