Sha256: 6bfc95086d96824aef7f976884345e07fe710c0547eba255b4ac337b77f2d09e

Contents?: true

Size: 530 Bytes

Versions: 396

Compression:

Stored size: 530 Bytes

Contents

(ns roman-numerals)

(def ^:private numeral-mapping [
  [1000 "M"]
  [ 900 "CM"]
  [ 500 "D"]
  [ 400 "CD"]
  [ 100 "C"]
  [  90 "XC"]
  [  50 "L"]
  [  40 "XL"]
  [  10 "X"]
  [   9 "IX"]
  [   5 "V"]
  [   4 "IV"]
  [   1 "I"]
])

(defn- largest-factor [number]
  (first (filter
           (fn [[p l]] (<= p number))
           numeral-mapping)))

(defn numerals [number]
  (if
    (zero? number) ""
    (let [[part letter] (largest-factor number)
          remainder (- number part)]
      (str letter (numerals remainder)))))

Version data entries

396 entries across 396 versions & 1 rubygems

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