Chouser's solution works well, but I found that you can end up
with an empty string sometimes or never getting the maxlength
that you passed in.
1:2 user=> (take 3 (seq-of-rand-strings 10))
("ngene" "" "dwlbzndqx")
I added an inc before calling the take and that clears things up.
(defn seq-of-rand-strings [maxlength]
(repeatedly (fn []
(apply str (take (inc (rand-int maxlength))
(repeatedly #(char (+ (int \a) (rand-int
26)))))))))
On Mon, Jan 12, 2009 at 1:38 AM, GS <[email protected]> wrote:
>
>
> > (defn seq-of-rand-strings [maxlength]
> > (repeatedly (fn []
> > (apply str (take (rand-int maxlength)
> > (repeatedly #(char (+ (int \a) (rand-int 26)))))))))
> >
> > user=> (take 3 (seq-of-rand-strings 10))
> > ("kae" "xwuwyp" "xa")
>
> Thanks Chouser. I learned some useful and interesting things from
> your reply. I was unaware of 'char and 'repeatedly.
>
> Gavin
> >
>
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups
"Clojure" group.
To post to this group, send email to [email protected]
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
-~----------~----~----~----~------~----~------~--~---