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.98 tracks/clojure/exercises/hexadecimal/src/example.clj
trackler-2.2.1.97 tracks/clojure/exercises/hexadecimal/src/example.clj
trackler-2.2.1.96 tracks/clojure/exercises/hexadecimal/src/example.clj
trackler-2.2.1.95 tracks/clojure/exercises/hexadecimal/src/example.clj
trackler-2.2.1.94 tracks/clojure/exercises/hexadecimal/src/example.clj
trackler-2.2.1.93 tracks/clojure/exercises/hexadecimal/src/example.clj
trackler-2.2.1.92 tracks/clojure/exercises/hexadecimal/src/example.clj
trackler-2.2.1.91 tracks/clojure/exercises/hexadecimal/src/example.clj
trackler-2.2.1.90 tracks/clojure/exercises/hexadecimal/src/example.clj
trackler-2.2.1.89 tracks/clojure/exercises/hexadecimal/src/example.clj
trackler-2.2.1.88 tracks/clojure/exercises/hexadecimal/src/example.clj
trackler-2.2.1.87 tracks/clojure/exercises/hexadecimal/src/example.clj
trackler-2.2.1.86 tracks/clojure/exercises/hexadecimal/src/example.clj
trackler-2.2.1.85 tracks/clojure/exercises/hexadecimal/src/example.clj
trackler-2.2.1.84 tracks/clojure/exercises/hexadecimal/src/example.clj
trackler-2.2.1.83 tracks/clojure/exercises/hexadecimal/src/example.clj
trackler-2.2.1.82 tracks/clojure/exercises/hexadecimal/src/example.clj
trackler-2.2.1.81 tracks/clojure/exercises/hexadecimal/src/example.clj
trackler-2.2.1.80 tracks/clojure/exercises/hexadecimal/src/example.clj
trackler-2.2.1.79 tracks/clojure/exercises/hexadecimal/src/example.clj