What is "group-frames"?

--art

On Jul 21, 12:00 am, Mark Triggs <mark.h.tri...@gmail.com> wrote:
> Hi Stu,
>
> Stuart Halloway <stuart.hallo...@gmail.com> writes:
> > Uncle Bob Martin, a very well-respected OO and agile guy, is learning  
> > Clojure. He has posted an example [1] and asked for feedback from the  
> > Clojure community. I have made my suggestions in code [2] and will be  
> > writing them up shortly.
>
> > Would love to see what other folks on this list have to say.
>
> My first version came out rather similar to yours, and then I started
> thinking about turning the problem on its head and making the concept of
> "types of rolls" more explicit.  I'm still not sure how I feel about
> this, but the line of thinking led me to code like this:
>
>   (ns bowling-game
>     (:use clojure.contrib.seq-utils))
>
>   (def *roll-types*
>        [{:name "strike"
>          :satisfies #(= (first %) 10)
>          :consumes 3
>          :advances 1}
>
>         {:name "spare"
>          :satisfies #(= (apply + (take 2 %))
>                         10)
>          :consumes 3
>          :advances 2}
>
>         {:name "regular (underachieving?)"
>          :satisfies (constantly true)
>          :consumes 2
>          :advances 2}])
>
>   (defn roll-type [rolls]
>     (find-first #((:satisfies %) rolls)
>                 *roll-types*))
>
>   (defn frames [rolls]
>     (when (seq rolls)
>       (let [{:keys [consumes advances]} (roll-type rolls)]
>         (cons (take consumes rolls)
>               (frames (drop advances rolls))))))
>
>   (defn score-game [rolls]
>     (reduce + (map #(reduce + %)
>                    (take 10 (group-frames rolls)))))
>
> Cheers,
>
> Mark
>
> --
> Mark Triggs
> <mark.h.tri...@gmail.com>
--~--~---------~--~----~------------~-------~--~----~
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