1年前くらいにちょっとかじっていたClojureを最近めっきり書いてなくて、いまからもう一度やろうと思うと完全に忘れてしまっていた。
これから年末にかけて少しづつClojureの修行するつもりなので、練習がてらまずFizzBuzzを書いてみた。
(ns programming-clj.fizzbuzz)
(defn whole-number
[]
(iterate inc 1))
(defn fizzbuzz-filter
[x]
(cond
(= (rem x 15) 0) "fizzbuzz"
(= (rem x 5) 0) "buzz"
(= (rem x 3) 0) "fizz"
:else x))
(defn start
[x]
(take x (map fizzbuzz-filter (whole-number))))
(start 30)
;=> (1 2 "fizz" 4 "buzz" "fizz" 7 8 "fizz" "buzz" 11 "fizz" 13 14 "fizzbuzz" 16 17 "fizz" 19 "buzz" "fizz" 22 23 "fizz" "buzz" 26 "fizz" 28 29 "fizzbuzz")
(start 15)
; => (1 2 "fizz" 4 "buzz" "fizz" 7 8 "fizz" "buzz" 11 "fizz" 13 14 "fizzbuzz")