Как поменять местами соседние элементы во входной последовательности с помощью 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))))
)
flatten
(почти) никогда не бывает правильным ответом. Представьте, если бы A вместо этого было определено как[[1 2] [3 4]]
. Мы бы хотели, чтобы результат был[[3 4] [1 2]]
, но с версиейflatten
мы получили бы[3 4 1 2]
. 27.11.2018