我有一串整数,我想把它们分成递增的片段,并且希望尽可能少的片段。因此,我希望有
(segmentize [1 2 3 4 3 8 9 1 7] <=)
;=> [[1 2 3 4][3 8 9][1 7]]
我已按照以下方式实现了segmentize:
(defn segmentize [col lte]
(loop [col col s [] res []]
(cond (empty? col) (conj res s)
(empty? s) (recur (rest col) (conj s (first col)) res)
(lte (last s) (first col)) (recur (rest col) (conj s (first col)) res)
:else (recur col [] (conj res s)))))
但我想知道是否已经有一些方便的Clojure函数可以完全实现这一点,或者是否有更符合惯用法的方法来实现这一点。