Wir werden eine Liste von ganzen Zahlen falten. Gehen Sie dazu wie folgt vor: Wenn die Liste gerade ist, erstellen Sie eine Liste mit der Hälfte ihrer Länge, wobei das n-te Element der neuen Liste die Summe aus dem n-ten Element der alten Liste und dem n-ten bis zum-ten ist. letzter Punkt der alten Liste. Zum Beispiel, wenn wir die Liste hätten
[1 2 3 4 5 6 7 8]
Wir würden es so falten
[8 7 6 5]
+[1 2 3 4]
__________
[9 9 9 9]
Wenn die Liste eine ungerade Länge hat, entfernen wir zum Falten zuerst das mittlere Element, falten es wie gerade und hängen das mittlere Element an das Ergebnis an.
Zum Beispiel, wenn wir die Liste hätten
[1 2 3 4 5 6 7]
Wir würden es so falten
[7 6 5]
+[1 2 3]
__________
[8 8 8]
++ [4]
__________
[8 8 8 4]
Aufgabe
Schreiben Sie ein Programm oder eine Funktion, die eine Liste von ganzen Zahlen als Ein- und Ausgänge verwendet, die gefaltet sind.
Dies ist eine Code-Golf- Frage, daher werden die Antworten in Bytes bewertet, wobei weniger Bytes besser sind.
Beispielimplementierung
Hier ist eine Implementierung in Haskell, die eine Funktion definiert f
, die eine Faltung ausführt.
f(a:b@(_:_))=a+last b:f(init b)
f x=x