On Thursday, November 6, 2014 8:48:07 PM UTC-5, blake wrote:
>
> I wanted to put the delimiters in one step and then split in a different
> one, so I did this:
>
> (defn delimit[v]
> (reduce #(if (= (last %) (dec %2))
> (conj % %2)
> (conj % :split %2))
> [(first v)] (rest v)))
>
> (delimit [1 3 4 5 7 9 10 11 12])
> => [1 :split 3 4 5 :split 7 :split 9 10 11 12]
>
> But that was before I realized there was no equivalent to
> clojure.string/split that works on lists.
>
>
Oooh, that's a good idea. Thanks. It's easy enough to split after you've
added those markers/gaps in:
~~~clojure
#!/usr/bin/env lein-exec
(def v [1 3 4 5 7 9 10 11 12])
(defn insert-gaps
[coll]
(reduce (fn [accum x]
(if (= x (inc (last accum)))
(conj accum x)
(conj accum :gap x)))
[(first coll)]
(rest coll)))
(defn congeal-consecutives
"Assumes coll has :gaps."
[coll]
(let [res (partition-by (fn [x]
(= x :gap))
coll)]
(remove (fn [x]
(= x '(:gap)))
res)))
(prn (congeal-consecutives (insert-gaps v)))
~~~
--
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to [email protected]
Note that posts from new members are moderated - please be patient with your
first post.
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en
---
You received this message because you are subscribed to the Google Groups
"Clojure" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
For more options, visit https://groups.google.com/d/optout.