Sha256: 64ba843f9081c49fb1a0e640655487c440e2ac10b0d563080942fb9431540cf6

Contents?: true

Size: 691 Bytes

Versions: 396

Compression:

Stored size: 691 Bytes

Contents

(ns allergies)

(def ^:private allergens
  [:eggs :peanuts :shellfish :strawberries :tomatoes :chocolate :pollen :cats])

(defn- flagged?
  [flags index]
  (-> (bit-shift-right flags index)
      (bit-and 1)
      (pos?)))

(defn allergies
  "Given an 8-bit bitmap of flags, return the list of matching allergens."
  [flags]
  (keep-indexed (fn [index allergen]
                  (when (flagged? flags index)
                    allergen))
                allergens))

(defn allergic-to?
  "Given an 8-bit bitmap of flags and an allergen, return a boolean
  indicating whether or not the patient is allergic to the given allergen."
  [flags allergen]
  (some #{allergen} (allergies flags)))

Version data entries

396 entries across 396 versions & 1 rubygems

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