Sha256: 9df2b5c148ce4206f37e8260adcf87755b6452e2d674cd1f5647eee093783641

Contents?: true

Size: 555 Bytes

Versions: 323

Compression:

Stored size: 555 Bytes

Contents

package Example;

use strict;
use warnings;

use List::Util 'first';

my @allergens = qw(eggs peanuts shellfish strawberries tomatoes chocolate pollen cats);

sub new {
    my ($class, $score) = @_;
    my $self = bless {} => $class;
    $self->{score} = reverse sprintf "%08b", $score;

    return $self;
}

sub allergic_to {
    my ($self, $allergen) = @_;

    my $index = first { $allergens[$_] eq $allergen } 0..$#allergens;

    return substr $self->{score}, $index, 1; 
}

sub list { [ grep { $_[0]->allergic_to($_) } @allergens ] }

__PACKAGE__;

Version data entries

323 entries across 323 versions & 1 rubygems

Version Path
trackler-2.2.1.105 tracks/perl5/exercises/allergies/Example.pm
trackler-2.2.1.104 tracks/perl5/exercises/allergies/Example.pm
trackler-2.2.1.103 tracks/perl5/exercises/allergies/Example.pm
trackler-2.2.1.102 tracks/perl5/exercises/allergies/Example.pm
trackler-2.2.1.101 tracks/perl5/exercises/allergies/Example.pm
trackler-2.2.1.100 tracks/perl5/exercises/allergies/Example.pm
trackler-2.2.1.99 tracks/perl5/exercises/allergies/Example.pm
trackler-2.2.1.98 tracks/perl5/exercises/allergies/Example.pm
trackler-2.2.1.97 tracks/perl5/exercises/allergies/Example.pm
trackler-2.2.1.96 tracks/perl5/exercises/allergies/Example.pm
trackler-2.2.1.95 tracks/perl5/exercises/allergies/Example.pm
trackler-2.2.1.94 tracks/perl5/exercises/allergies/Example.pm
trackler-2.2.1.93 tracks/perl5/exercises/allergies/Example.pm
trackler-2.2.1.92 tracks/perl5/exercises/allergies/Example.pm
trackler-2.2.1.91 tracks/perl5/exercises/allergies/Example.pm
trackler-2.2.1.90 tracks/perl5/exercises/allergies/Example.pm
trackler-2.2.1.89 tracks/perl5/exercises/allergies/Example.pm
trackler-2.2.1.88 tracks/perl5/exercises/allergies/Example.pm
trackler-2.2.1.87 tracks/perl5/exercises/allergies/Example.pm
trackler-2.2.1.86 tracks/perl5/exercises/allergies/Example.pm