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.159 tracks/perl5/exercises/largest-series-product/.meta/solutions/Series.pm
trackler-2.2.1.158 tracks/perl5/exercises/largest-series-product/.meta/solutions/Series.pm
trackler-2.2.1.157 tracks/perl5/exercises/largest-series-product/.meta/solutions/Series.pm
trackler-2.2.1.156 tracks/perl5/exercises/largest-series-product/.meta/solutions/Series.pm
trackler-2.2.1.155 tracks/perl5/exercises/largest-series-product/.meta/solutions/Series.pm
trackler-2.2.1.154 tracks/perl5/exercises/largest-series-product/.meta/solutions/Series.pm
trackler-2.2.1.153 tracks/perl5/exercises/largest-series-product/.meta/solutions/Series.pm
trackler-2.2.1.152 tracks/perl5/exercises/largest-series-product/.meta/solutions/Series.pm
trackler-2.2.1.151 tracks/perl5/exercises/largest-series-product/.meta/solutions/Series.pm
trackler-2.2.1.150 tracks/perl5/exercises/largest-series-product/.meta/solutions/Series.pm
trackler-2.2.1.149 tracks/perl5/exercises/largest-series-product/.meta/solutions/Series.pm
trackler-2.2.1.148 tracks/perl5/exercises/largest-series-product/.meta/solutions/Series.pm
trackler-2.2.1.147 tracks/perl5/exercises/largest-series-product/.meta/solutions/Series.pm
trackler-2.2.1.146 tracks/perl5/exercises/largest-series-product/.meta/solutions/Series.pm
trackler-2.2.1.145 tracks/perl5/exercises/largest-series-product/.meta/solutions/Series.pm
trackler-2.2.1.144 tracks/perl5/exercises/largest-series-product/.meta/solutions/Series.pm
trackler-2.2.1.143 tracks/perl5/exercises/largest-series-product/.meta/solutions/Series.pm
trackler-2.2.1.142 tracks/perl5/exercises/largest-series-product/.meta/solutions/Series.pm
trackler-2.2.1.141 tracks/perl5/exercises/largest-series-product/.meta/solutions/Series.pm
trackler-2.2.1.140 tracks/perl5/exercises/largest-series-product/.meta/solutions/Series.pm