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 clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+unsubscr...@googlegroups.com 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 clojure+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.