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

Version Path
trackler-2.2.1.180 tracks/php/exercises/allergies/example.php
trackler-2.2.1.179 tracks/php/exercises/allergies/example.php
trackler-2.2.1.178 tracks/php/exercises/allergies/example.php
trackler-2.2.1.177 tracks/php/exercises/allergies/example.php
trackler-2.2.1.176 tracks/php/exercises/allergies/example.php
trackler-2.2.1.175 tracks/php/exercises/allergies/example.php
trackler-2.2.1.174 tracks/php/exercises/allergies/example.php
trackler-2.2.1.173 tracks/php/exercises/allergies/example.php
trackler-2.2.1.172 tracks/php/exercises/allergies/example.php
trackler-2.2.1.171 tracks/php/exercises/allergies/example.php
trackler-2.2.1.170 tracks/php/exercises/allergies/example.php
trackler-2.2.1.169 tracks/php/exercises/allergies/example.php
trackler-2.2.1.167 tracks/php/exercises/allergies/example.php
trackler-2.2.1.166 tracks/php/exercises/allergies/example.php
trackler-2.2.1.165 tracks/php/exercises/allergies/example.php
trackler-2.2.1.164 tracks/php/exercises/allergies/example.php
trackler-2.2.1.163 tracks/php/exercises/allergies/example.php
trackler-2.2.1.162 tracks/php/exercises/allergies/example.php
trackler-2.2.1.161 tracks/php/exercises/allergies/example.php
trackler-2.2.1.160 tracks/php/exercises/allergies/example.php