summaryrefslogtreecommitdiff
path: root/exercism/emacs-lisp/allergies/allergies.el
blob: 127948489a1d1c90a25faedac19cc367a33ecf69 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
;;; allergies.el --- Allergies Exercise (exercism)

;;; Commentary:

;;; Code:

(require 'seq)

(setq allergens
      '(eggs
        peanuts
        shellfish
        strawberries
        tomatoes
        chocolate
        pollen
        cats))

(defun allergen-list (n)
  (let* ((index 0)
         (pred (lambda (item)
                 (let ((r (< 0 (logand (ash 1 index) n))))
                   (setq index (1+ index))
                   (when r item)))))
    (mapcar 'symbol-name
            (seq-filter pred allergens))))

(defun allergic-to-p (n item)
  (seq-contains-p (allergen-list n) item))

(provide 'allergies)
;;; allergies.el ends here