Мы собираемся сложить список целых чисел. Процедура для этого заключается в следующем: если список имеет четную длину, составьте список из половины его длины, где n-й элемент нового списка представляет собой сумму n-го элемента старого списка и n-го до последний пункт старого списка. Например, если бы у нас был список
[1 2 3 4 5 6 7 8]
Мы бы сложили это так
[8 7 6 5]
+[1 2 3 4]
__________
[9 9 9 9]
Если список имеет нечетную длину, чтобы сложить его, мы сначала удаляем средний элемент, складываем его, как если бы он был четным, и добавляем средний элемент к результату.
Например, если бы у нас был список
[1 2 3 4 5 6 7]
Мы бы сложили это так
[7 6 5]
+[1 2 3]
__________
[8 8 8]
++ [4]
__________
[8 8 8 4]
задача
Напишите программу или функцию, которая принимает список целых чисел в качестве входных данных и выводит их в сложенном виде.
Это вопрос по коду-гольфу, поэтому ответы будут оцениваться в байтах, при этом меньшее количество байтов будет лучше.
Пример реализации
Вот реализация в Haskell, которая определяет функцию, fкоторая выполняет свертывание.
f(a:b@(_:_))=a+last b:f(init b)
f x=x