Sha256: dfaf15da14f0b2cc5787e9047fc4d5a4aa0769c049961b84300ca0ac702e772f

Contents?: true

Size: 708 Bytes

Versions: 73

Compression:

Stored size: 708 Bytes

Contents

package Series;

use strict;
use warnings;
use List::Util 'reduce';

sub new {
    my ($class, $input) = @_;
    return bless {input => $input}, $class;
}

sub slices {
    my ( $self, $size ) = @_;
    my $input = $self->{input};

    die "ArgumentError" if $size > length $input;

    return [ map { [ split // ] } $input =~ m/(?=(.{$size}))/g ];
}

sub largest_product {
    my ( $self, $size ) = @_;
    my @slices = @{ $self->slices($size) };

    return 1 if not $size;

    my $largest = reduce { $a * $b  } @{ shift @slices };
    foreach my $slice ( @slices ) {
        my $product = reduce { $a * $b } @$slice;
        $largest = $product if $product > $largest;
    }

    return $largest;
}

1;

Version data entries

73 entries across 73 versions & 1 rubygems

Version Path
trackler-2.2.1.180 tracks/perl5/exercises/largest-series-product/.meta/solutions/Series.pm
trackler-2.2.1.179 tracks/perl5/exercises/largest-series-product/.meta/solutions/Series.pm
trackler-2.2.1.178 tracks/perl5/exercises/largest-series-product/.meta/solutions/Series.pm
trackler-2.2.1.177 tracks/perl5/exercises/largest-series-product/.meta/solutions/Series.pm
trackler-2.2.1.176 tracks/perl5/exercises/largest-series-product/.meta/solutions/Series.pm
trackler-2.2.1.175 tracks/perl5/exercises/largest-series-product/.meta/solutions/Series.pm
trackler-2.2.1.174 tracks/perl5/exercises/largest-series-product/.meta/solutions/Series.pm
trackler-2.2.1.173 tracks/perl5/exercises/largest-series-product/.meta/solutions/Series.pm
trackler-2.2.1.172 tracks/perl5/exercises/largest-series-product/.meta/solutions/Series.pm
trackler-2.2.1.171 tracks/perl5/exercises/largest-series-product/.meta/solutions/Series.pm
trackler-2.2.1.170 tracks/perl5/exercises/largest-series-product/.meta/solutions/Series.pm
trackler-2.2.1.169 tracks/perl5/exercises/largest-series-product/.meta/solutions/Series.pm
trackler-2.2.1.167 tracks/perl5/exercises/largest-series-product/.meta/solutions/Series.pm
trackler-2.2.1.166 tracks/perl5/exercises/largest-series-product/.meta/solutions/Series.pm
trackler-2.2.1.165 tracks/perl5/exercises/largest-series-product/.meta/solutions/Series.pm
trackler-2.2.1.164 tracks/perl5/exercises/largest-series-product/.meta/solutions/Series.pm
trackler-2.2.1.163 tracks/perl5/exercises/largest-series-product/.meta/solutions/Series.pm
trackler-2.2.1.162 tracks/perl5/exercises/largest-series-product/.meta/solutions/Series.pm
trackler-2.2.1.161 tracks/perl5/exercises/largest-series-product/.meta/solutions/Series.pm
trackler-2.2.1.160 tracks/perl5/exercises/largest-series-product/.meta/solutions/Series.pm