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