Monday, June 2, 2014

Clojure Koans Answers and Explanations - 11 - Sequence Comprehension

Let's look at the solutions for the next of Clojure Koans -Sequence Comprehension.

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;1
(= __
     (for [index (range 6)]
       index))
(= [0 1 2 3 4 5]
     (for [index (range 6)]
       index))

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;2
 (= '(0 1 4 9 16 25)
     (map (fn [index] (* index index))
          (range 6))
     (for [index (range 6)]
       __))
 (= '(0 1 4 9 16 25)
     (map (fn [index] (* index index))
          (range 6))
     (for [index (range 6)]
       (* index index)))
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;3
 (= '(1 3 5 7 9)
     (filter odd? (range 10))
     (for [index __ :when (odd? index)]
       index))
 (= '(1 3 5 7 9)
     (filter odd? (range 10))
     (for [index (range 10) :when (odd? index)]
       index))
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;4
 (= '(1 9 25 49 81)
     (map (fn [index] (* index index))
          (filter odd? (range 10)))
     (for [index (range 10) :when __]
       __))
 (= '(1 9 25 49 81)
     (map (fn [index] (* index index))
          (filter odd? (range 10)))
     (for [index (range 10) :when (odd? index)]
       (* index index)))

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;5

 (= [[:top :left] [:top :middle] [:top :right]
      [:middle :left] [:middle :middle] [:middle :right]
      [:bottom :left] [:bottom :middle] [:bottom :right]]
       (for [row [:top :middle :bottom] column [:left :middle :right]]
         __)))
(= [[:top :left] [:top :middle] [:top :right]
      [:middle :left] [:middle :middle] [:middle :right]
      [:bottom :left] [:bottom :middle] [:bottom :right]]
       (for [row [:top :middle :bottom] column [:left :middle :right]]
         [row column]))


No comments:

Post a Comment