Sha256: 729ef4a550d82ce030fe7f169ceb81832d59319b9871795cabd29c022d029675
Contents?: true
Size: 1.31 KB
Versions: 384
Compression:
Stored size: 1.31 KB
Contents
<?php class Allergies { private $score; public function __construct($score) { $this->score = $score; } public function getList() { $score = $this->score; return array_filter(Allergen::allergenList(), function ($allergen) use ($score) { return $this->isAllergicTo($allergen); }); } public function isAllergicTo(Allergen $allergen) { return ($this->score & $allergen->getScore()) == $allergen->getScore(); } } class Allergen { const EGGS = 1; const PEANUTS = 2; const SHELLFISH = 4; const STRAWBERRIES = 8; const TOMATOES = 16; const CHOCOLATE = 32; const POLLEN = 64; const CATS = 128; private $score; public function __construct($score) { $this->score = $score; } public function getScore() { return $this->score; } public static function allergenList() { return [ new Allergen(Allergen::CATS), new Allergen(Allergen::CHOCOLATE), new Allergen(Allergen::EGGS), new Allergen(Allergen::PEANUTS), new Allergen(Allergen::POLLEN), new Allergen(Allergen::SHELLFISH), new Allergen(Allergen::STRAWBERRIES), new Allergen(Allergen::TOMATOES), ]; } }
Version data entries
384 entries across 384 versions & 1 rubygems