Sha256: 2c5eb7d826138d484d67c4974e5626fbc067569f13a059e221bb14963455b30c

Contents?: true

Size: 601 Bytes

Versions: 396

Compression:

Stored size: 601 Bytes

Contents

(ns hexadecimal)

(defn- char-between [start end c]
  (let [ascii (int c)]
    (and (>= ascii (int start)) (<= ascii (int end)))))

(def is-digit (partial char-between \0 \9))
(def is-a-to-f (partial char-between \a \f))

(defn- is-hex-digit [c]
    (or (is-digit c) (is-a-to-f c)))

(defn- digit-to-int [c]
  (cond
    (is-digit c) (- (int c) (int \0))
    (is-a-to-f c) (+ (- (int c) (int \a)) 10)
    :else (throw (Exception. "Character is not a hex digit"))))

(defn hex-to-int [digits]
  (if
    (some (complement is-hex-digit) digits) 0
    (reduce #(+ (digit-to-int %2) (* %1 16)) 0 digits)))

Version data entries

396 entries across 396 versions & 1 rubygems

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