Vamos a doblar una lista de enteros. El procedimiento para hacerlo es el siguiente: si la lista tiene una longitud par, haga una lista de la mitad de su longitud donde el enésimo elemento de la nueva lista es la suma del enésimo elemento de la lista anterior y el enésimo Último elemento de la lista anterior. Por ejemplo si tuviéramos la lista
[1 2 3 4 5 6 7 8]
Lo doblaríamos así
[8 7 6 5]
+[1 2 3 4]
__________
[9 9 9 9]
Si la lista tiene una longitud impar , para doblarla primero eliminamos el elemento del medio, doblarlo como si fuera par y agregar el elemento del medio al resultado.
Por ejemplo si tuviéramos la lista
[1 2 3 4 5 6 7]
Lo doblaríamos así
[7 6 5]
+[1 2 3]
__________
[8 8 8]
++ [4]
__________
[8 8 8 4]
Tarea
Escriba un programa o función que tome una lista de enteros como entradas y salidas que se pliegan.
Esta es una pregunta de código de golf , por lo que las respuestas se puntuarán en bytes, con menos bytes mejor.
Implementación de muestra
Aquí hay una implementación en Haskell que define una función fque realiza un pliegue.
f(a:b@(_:_))=a+last b:f(init b)
f x=x