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.78 tracks/clojure/exercises/hexadecimal/src/example.clj
trackler-2.2.1.77 tracks/clojure/exercises/hexadecimal/src/example.clj
trackler-2.2.1.76 tracks/clojure/exercises/hexadecimal/src/example.clj
trackler-2.2.1.75 tracks/clojure/exercises/hexadecimal/src/example.clj
trackler-2.2.1.74 tracks/clojure/exercises/hexadecimal/src/example.clj
trackler-2.2.1.73 tracks/clojure/exercises/hexadecimal/src/example.clj
trackler-2.2.1.72 tracks/clojure/exercises/hexadecimal/src/example.clj
trackler-2.2.1.71 tracks/clojure/exercises/hexadecimal/src/example.clj
trackler-2.2.1.70 tracks/clojure/exercises/hexadecimal/src/example.clj
trackler-2.2.1.69 tracks/clojure/exercises/hexadecimal/src/example.clj
trackler-2.2.1.68 tracks/clojure/exercises/hexadecimal/src/example.clj
trackler-2.2.1.67 tracks/clojure/exercises/hexadecimal/src/example.clj
trackler-2.2.1.66 tracks/clojure/exercises/hexadecimal/src/example.clj
trackler-2.2.1.65 tracks/clojure/exercises/hexadecimal/src/example.clj
trackler-2.2.1.64 tracks/clojure/exercises/hexadecimal/src/example.clj
trackler-2.2.1.63 tracks/clojure/exercises/hexadecimal/src/example.clj
trackler-2.2.1.62 tracks/clojure/exercises/hexadecimal/src/example.clj
trackler-2.2.1.61 tracks/clojure/exercises/hexadecimal/src/example.clj
trackler-2.2.1.60 tracks/clojure/exercises/hexadecimal/src/example.clj
trackler-2.2.1.59 tracks/clojure/exercises/hexadecimal/src/example.clj