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.119 tracks/clojure/exercises/allergies/src/example.clj
trackler-2.2.1.118 tracks/clojure/exercises/allergies/src/example.clj
trackler-2.2.1.117 tracks/clojure/exercises/allergies/src/example.clj
trackler-2.2.1.116 tracks/clojure/exercises/allergies/src/example.clj
trackler-2.2.1.115 tracks/clojure/exercises/allergies/src/example.clj
trackler-2.2.1.114 tracks/clojure/exercises/allergies/src/example.clj
trackler-2.2.1.113 tracks/clojure/exercises/allergies/src/example.clj
trackler-2.2.1.111 tracks/clojure/exercises/allergies/src/example.clj
trackler-2.2.1.110 tracks/clojure/exercises/allergies/src/example.clj
trackler-2.2.1.109 tracks/clojure/exercises/allergies/src/example.clj
trackler-2.2.1.108 tracks/clojure/exercises/allergies/src/example.clj
trackler-2.2.1.107 tracks/clojure/exercises/allergies/src/example.clj
trackler-2.2.1.106 tracks/clojure/exercises/allergies/src/example.clj
trackler-2.2.1.105 tracks/clojure/exercises/allergies/src/example.clj
trackler-2.2.1.104 tracks/clojure/exercises/allergies/src/example.clj
trackler-2.2.1.103 tracks/clojure/exercises/allergies/src/example.clj
trackler-2.2.1.102 tracks/clojure/exercises/allergies/src/example.clj
trackler-2.2.1.101 tracks/clojure/exercises/allergies/src/example.clj
trackler-2.2.1.100 tracks/clojure/exercises/allergies/src/example.clj
trackler-2.2.1.99 tracks/clojure/exercises/allergies/src/example.clj