4

シーケンスを上位 n 要素と残りの要素に分割したいと思います。組み込みの sort と split-at を使用した非効率的な実装を次に示します。

> (defn split-top-n
    [n comp coll]
    (split-at n (sort comp coll)))

> (split-top-n 2 #(- %2 %1) (list 6.2 5.1 88.0 90.1 1.2 16.9))
[(90.1 88.0) (16.9 6.2 5.1 1.2)]

これに効率的なClojureビルトインはありますか? それとも自分で書く必要がありますか?

4

3 に答える 3

0

指の木の使用の可能性があるように見えます

(require '[clojure.data.finger-tree :as ft])
(def css (apply ft/counted-sorted-set (list 6.2 5.1 88.0 90.1 1.2 16.9)))
(ft/ft-split-at css 3)

[(1.2 5.1 6.2) 16.9 (88.0 90.1)]
于 2013-09-12T04:17:16.577 に答える