输入序列中的Clojure交换元素

时间:2018-11-27 02:04:17

标签: clojure sequence swap

如何使用clojure交换输入序列中的相邻元素。 [10 15 20 25] ---> [15 10 25 20] [:q:e:g:t:p] ---> [:e:q:t:g:p]

这是我的操作方式,但是可以肯定,还有更好的方法!

(defn switch [s]
(loop [[a b & rest] s
       result []]
  (if (empty? rest)
    (cond
        ;;empty sequence
        (empty? s) result
        ;;odd sequence
        (nil? b) (conj result a)
        ;;even sequence
        :else (conj result b a)
    )
    (recur rest (conj result b a))))
    )

1 个答案:

答案 0 :(得分:2)

CONVERT