I had assumed when he wrote "do not use iteration",
what he meant is to "not use for/next loop"

otherwise, as you said, we can't solve the problem without
examining the sequence.

On Fri, Jan 29, 2010 at 2:38 PM, Meikel Brandmeyer <m...@kotka.de> wrote:
> Hi,
>
> Am 29.01.2010 um 16:25 schrieb Wilson MacGyver:
>
>> I saw this on twitter.
>>
>> http://pastie.org/796264
>>
>> The problem: given a list of strings, produce a list where sequential
>> non-empty strings are concatenated
>>
>> # Conditions: Do not use iteration.
>> #
>> # Example: glom (["a", "b", "c"]) = ["abc"]
>> #          glom (["a", "", "b"]) = ["a", "b"]
>> #          glom (["a", "b", "", "c"]) = ["ab", "c"]
>> #          glom (["a", "b", "", "", "c"]) = ["ab", "c"]
>>
>>
>> The author had rules like, don't use iteration and avoid recursion.
>>
>> anyone have any clever solutions? My first reaction was to use reduce, but
>> I'm not sure how that'd work.
>
> I don't know the definition of iteration, but for my (naive, hobbyist) 
> understanding you won't get around it. Recursion is just another form. A map 
> call is just another form. A reduce call is just another form. You have to 
> walk the sequence in one way or the other and I would call that „iteration“. 
> But I called the shot already in the sieve thread. So I will shut up now. 
> Please enlighten me if this is totally wrong.
>
> Here a recursive definition.
>
> (defn glom
>  [coll]
>  (lazy-seq
>    (when-let [s (seq coll)]
>      (let [[items tail] (split-with (complement empty?) s)
>            tail         (drop-while empty? tail)]
>        (cons (apply str items) (glom tail))))))
>
> Sincerely
> Meikel
>
> --
> 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



-- 
Omnem crede diem tibi diluxisse supremum.

-- 
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

Reply via email to