Sha256: 8fcad2e93ce25c51622f77841de667bb57339aa45e9a8208b92e0b1b12935235

Contents?: true

Size: 740 Bytes

Versions: 121

Compression:

Stored size: 740 Bytes

Contents

(ns diamond)

(def alphabet (map char (range (int \A) (inc (int \Z)))))

(defn- pad [x]
  (apply str (repeat x " ")))

(defn- one-row [letter [inner-padding outer-padding]]
  (if (= inner-padding 0)
    (str (pad outer-padding) letter (pad outer-padding))
    (str (pad outer-padding) letter (pad inner-padding) letter (pad outer-padding))))

(defn- row-paddings [num-letters]
  (let [inner-padding (conj (iterate (partial + 2) 1) 0)
        outer-padding (iterate dec (dec num-letters))]
    (take num-letters (map vector inner-padding outer-padding))))

(defn diamond [c]
  (let [num-letters (- (int c) (dec (int \A)))
        top-half (map one-row alphabet (row-paddings num-letters))]
    (concat top-half (rest (reverse top-half)))))

Version data entries

121 entries across 121 versions & 1 rubygems

Version Path
trackler-2.2.1.180 tracks/clojure/exercises/diamond/src/example.clj
trackler-2.2.1.179 tracks/clojure/exercises/diamond/src/example.clj
trackler-2.2.1.178 tracks/clojure/exercises/diamond/src/example.clj
trackler-2.2.1.177 tracks/clojure/exercises/diamond/src/example.clj
trackler-2.2.1.176 tracks/clojure/exercises/diamond/src/example.clj
trackler-2.2.1.175 tracks/clojure/exercises/diamond/src/example.clj
trackler-2.2.1.174 tracks/clojure/exercises/diamond/src/example.clj
trackler-2.2.1.173 tracks/clojure/exercises/diamond/src/example.clj
trackler-2.2.1.172 tracks/clojure/exercises/diamond/src/example.clj
trackler-2.2.1.171 tracks/clojure/exercises/diamond/src/example.clj
trackler-2.2.1.170 tracks/clojure/exercises/diamond/src/example.clj
trackler-2.2.1.169 tracks/clojure/exercises/diamond/src/example.clj
trackler-2.2.1.167 tracks/clojure/exercises/diamond/src/example.clj
trackler-2.2.1.166 tracks/clojure/exercises/diamond/src/example.clj
trackler-2.2.1.165 tracks/clojure/exercises/diamond/src/example.clj
trackler-2.2.1.164 tracks/clojure/exercises/diamond/src/example.clj
trackler-2.2.1.163 tracks/clojure/exercises/diamond/src/example.clj
trackler-2.2.1.162 tracks/clojure/exercises/diamond/src/example.clj
trackler-2.2.1.161 tracks/clojure/exercises/diamond/src/example.clj
trackler-2.2.1.160 tracks/clojure/exercises/diamond/src/example.clj