diff options
Diffstat (limited to 'exercism/emacs-lisp/allergies/allergies.el')
-rw-r--r-- | exercism/emacs-lisp/allergies/allergies.el | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/exercism/emacs-lisp/allergies/allergies.el b/exercism/emacs-lisp/allergies/allergies.el new file mode 100644 index 0000000..1279484 --- /dev/null +++ b/exercism/emacs-lisp/allergies/allergies.el @@ -0,0 +1,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 |