「A」「B」と「C」のみを含む単一文字列の遅延シーケンスがあるとします。
そこから、すべての「A」と「A」の直後に続く「B」をすべて含む 2 番目のシーケンスを作成したいと思います。
たとえば、入力シーケンス 'C' 'B' 'A' 'B' 'B' 'A' 'A' 'B' 'C' は、シーケンス 'ABB' 'A' 'AB' を生成します。
「A」「B」と「C」のみを含む単一文字列の遅延シーケンスがあるとします。
そこから、すべての「A」と「A」の直後に続く「B」をすべて含む 2 番目のシーケンスを作成したいと思います。
たとえば、入力シーケンス 'C' 'B' 'A' 'B' 'B' 'A' 'A' 'B' 'C' は、シーケンス 'ABB' 'A' 'AB' を生成します。
これはおそらく最善の解決策ではありませんが、 を使用した作業コードを次に示しますclojure.core/for
。
(def abc '("C" "B" "A" "B" "B" "A" "A" "B" "C"))
=> #'user/abc
(for [i (range (count abc))
:let [a (nth abc i)]
:when (= a "A")]
(apply str a (for [j (range (inc i) (count abc))
:let [b (nth abc j)]
:while (= b "B")]
b)))
=> ("ABB" "A" "AB")