Nous allons plier une liste d'entiers. La procédure à suivre est la suivante. Si la liste est de longueur paire, faites une liste de la moitié de sa longueur où le nième élément de la nouvelle liste est la somme du nième élément de l'ancienne liste et du nième au dernier. dernier élément de l'ancienne liste. Par exemple, si nous avions la liste
[1 2 3 4 5 6 7 8]
Nous le plierions comme ça
[8 7 6 5]
+[1 2 3 4]
__________
[9 9 9 9]
Si la liste est de longueur impaire , pour la plier, nous supprimons d'abord l'élément du milieu, plions-le comme s'il était pair et ajoutons l'élément du milieu au résultat.
Par exemple, si nous avions la liste
[1 2 3 4 5 6 7]
Nous le plierions comme ça
[7 6 5]
+[1 2 3]
__________
[8 8 8]
++ [4]
__________
[8 8 8 4]
Tâche
Écrivez un programme ou une fonction qui prend une liste d'entiers en entrée et sort cette liste pliée.
Il s'agit d'une question de code-golf, donc les réponses seront notées en octets, avec moins d'octets étant mieux.
Exemple d'implémentation
Voici une implémentation dans Haskell qui définit une fonction f
qui effectue un repli.
f(a:b@(_:_))=a+last b:f(init b)
f x=x