2017-06-04 2 views
1

Ich habe einen Vektor [1 2 3 4]. Gibt es eine Möglichkeit, jedes Paar der Zugabe [(+ 1 2) (+ 2 3) (+ 3 4)]Clojure - Hinzufügen von Paaren von Zahlen in einem Vektor

Ich versuchte

(loop [x 0] 
    (when (< x (count y)) 
    (+ (nth y x) (nth y (+ 1 x))) 
    (recur (+ x 1)))) 

zu bekommen, aber ich erhalte eine außerhalb der Grenzen Fehler IndexOutOfBoundsException clojure.lang.PersistentVector.arrayFor (PersistentVector.java:158)

Antwort

3

Dies ist ein Weg:

(->> [1 2 3 4] 
    (partition 2 1) 
    (mapv (partial reduce +))) 
;;=> [3 5 7] 

Die Hauptproblem sehe ich mit der Vorgehensweise, die Sie nahmen ist, dass es keinen Akku in der looprecur für gibt m. Ein anderes Problem ist, dass Sie when statt if verwenden. Hier

2

ist ein Destrukturierung Beispiel:

(->> [1 2 3 4] 
    (partition 2 1) 
    (mapv (fn [[f s]] (+ f s)))) 
5
(fn [xs] 
    (map + xs (rest xs))) 
Verwandte Themen