我们将折叠一个整数列表。这样做的步骤如下:如果列表的长度为偶数,请列出其长度的一半,其中新列表的第n个项是旧列表的第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