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.139 tracks/clojure/exercises/allergies/src/example.clj
trackler-2.2.1.138 tracks/clojure/exercises/allergies/src/example.clj
trackler-2.2.1.137 tracks/clojure/exercises/allergies/src/example.clj
trackler-2.2.1.136 tracks/clojure/exercises/allergies/src/example.clj
trackler-2.2.1.135 tracks/clojure/exercises/allergies/src/example.clj
trackler-2.2.1.134 tracks/clojure/exercises/allergies/src/example.clj
trackler-2.2.1.133 tracks/clojure/exercises/allergies/src/example.clj
trackler-2.2.1.132 tracks/clojure/exercises/allergies/src/example.clj
trackler-2.2.1.131 tracks/clojure/exercises/allergies/src/example.clj
trackler-2.2.1.130 tracks/clojure/exercises/allergies/src/example.clj
trackler-2.2.1.129 tracks/clojure/exercises/allergies/src/example.clj
trackler-2.2.1.128 tracks/clojure/exercises/allergies/src/example.clj
trackler-2.2.1.127 tracks/clojure/exercises/allergies/src/example.clj
trackler-2.2.1.126 tracks/clojure/exercises/allergies/src/example.clj
trackler-2.2.1.125 tracks/clojure/exercises/allergies/src/example.clj
trackler-2.2.1.124 tracks/clojure/exercises/allergies/src/example.clj
trackler-2.2.1.123 tracks/clojure/exercises/allergies/src/example.clj
trackler-2.2.1.122 tracks/clojure/exercises/allergies/src/example.clj
trackler-2.2.1.121 tracks/clojure/exercises/allergies/src/example.clj
trackler-2.2.1.120 tracks/clojure/exercises/allergies/src/example.clj