私は、このように、リストを取り、サブ配列を生成する:Clojureのリスト操作
(subs '(1 2 3))
; should evaluate to ((1) (1 2) (1 2 3) (2) (2 3) (3))
とはい、順序が重要。私は明らかに何かを見逃しているかもしれないが、私は立ち往生している。かなりのソリューションのためのボーナスポイント!ループ
(defn subs
[seq]
(let [c (count seq)]
(remove empty?
(for [x (range c) y (range (- (inc c) x))]
(take y (drop x seq))))))
と別の1
(defn subs
[seq]
(letfn [(take-len [f s] (take (count s) (iterate f s)))]
(mapcat #(reverse (take-len butlast %)) (take-len next seq))))
ためのネストされた単なるオーレ
再帰的に考える。 '(2 3)'のすべての部分列を生成できれば、 '(1 2 3)'のすべての部分列を得ることができますか? – Peteris