Sha256: 4857767605477664e7ee858b4d905d7203840c4ae9a8149e19f2375c6706292d

Contents?: true

Size: 498 Bytes

Versions: 104

Compression:

Stored size: 498 Bytes

Contents

(ns isbn-verifier)

(defn is-in? [xs x] (some #(= x %) xs))

(defn isbn-chars [isbn]
  (filter #(is-in? [\0 \1 \2 \3 \4 \5 \6 \7 \8 \9 \X] %) isbn))

(defn isbn? [isbn]
  (let [chars (isbn-chars isbn)
        nums  (map #(if (= \X %) 10 (Character/digit % 10)) chars)]
    (and (-> chars butlast (is-in? \X) not)
         (= 10 (count chars))
         (as-> nums x
               (map #(* %1 %2) (range 10 0 -1) x)
               (reduce + x)
               (mod x 11)
               (zero? x)))))

Version data entries

104 entries across 104 versions & 1 rubygems

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