1
說我有載體列表記錄位置Clojure中,總結向量的列表,一路上
([0 0] [1 0] [1 0] [1 0])
我希望能在沿途爲您矢量者名單,並記錄每一個獨特的位置。
[0 0]
[0 0] + [1 0] = [1 0]
[1 0] + [1 0] = [2 0]
[2 0] + [1 0] = [3 0]
給出4個獨特的位置。
([0 0] [1 0] [2 0] [3 0])
任何想法如何在Clojure中實現這一點?
我嘗試下面的代碼,但它爲溢出的大量矢量:(
(defn add-vectors [vectors]
(let [[a b] vectors]
(vec(map + a b))))
(defn get-positions [dirs positions]
(if (empty? (rest dirs))
(set positions)
(do
(let [next-pos (add-vectors (take 2 dirs))]
(get-directions (conj (rest (rest dirs)) next-pos) (conj positions next-pos))))))
的(conj (rest (rest dirs))
替換第一個元素在接下來的遞歸調用與來自前兩個向量的總和。最後一次通話
謝謝你非常有雄辯的迴應!對於想要掌握Clojure基礎知識的人來說,這意味着很多 –