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

      Комментарии к записи Сумма элементов на четных позициях отключены

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

  • Автор
    Сообщения
  • #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

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