Clojure - 如何在向量中添加连续对?

Aar*_*cia 4 sum vector clojure

尝试编写一个递归函数,在向量中添加连续的对.

[1 2 3 4] => [3 5 7]
Run Code Online (Sandbox Code Playgroud)

几乎卡住了,这就是我目前所拥有的:

(def tmp  [ 1 2 3 4])

user> (map #(+ (second %) (first %)) (partition-all 2 tmp ))
Run Code Online (Sandbox Code Playgroud)

这是错误的,因为它只添加对而不是连续的对.我得到[3 7]而不是[3 5 7]

Shl*_*omi 8

这是另一种可能的解决方案

(def tmp [1 2 3 4])

(map + tmp (rest tmp))
Run Code Online (Sandbox Code Playgroud)


noi*_*ith 7

分区需要一个额外的参数来指定每个分区之间的前进距离.

(map #(apply + %) (partition 2 1 [1 2 3 4 5])) =>

(3 5 7 9)