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.139 tracks/perl5/exercises/largest-series-product/.meta/solutions/Series.pm
trackler-2.2.1.138 tracks/perl5/exercises/largest-series-product/.meta/solutions/Series.pm
trackler-2.2.1.137 tracks/perl5/exercises/largest-series-product/.meta/solutions/Series.pm
trackler-2.2.1.136 tracks/perl5/exercises/largest-series-product/.meta/solutions/Series.pm
trackler-2.2.1.135 tracks/perl5/exercises/largest-series-product/.meta/solutions/Series.pm
trackler-2.2.1.134 tracks/perl5/exercises/largest-series-product/.meta/solutions/Series.pm
trackler-2.2.1.133 tracks/perl5/exercises/largest-series-product/.meta/solutions/Series.pm
trackler-2.2.1.132 tracks/perl5/exercises/largest-series-product/.meta/solutions/Series.pm
trackler-2.2.1.131 tracks/perl5/exercises/largest-series-product/.meta/solutions/Series.pm
trackler-2.2.1.130 tracks/perl5/exercises/largest-series-product/.meta/solutions/Series.pm
trackler-2.2.1.129 tracks/perl5/exercises/largest-series-product/.meta/solutions/Series.pm
trackler-2.2.1.128 tracks/perl5/exercises/largest-series-product/.meta/solutions/Series.pm
trackler-2.2.1.127 tracks/perl5/exercises/largest-series-product/.meta/solutions/Series.pm
trackler-2.2.1.126 tracks/perl5/exercises/largest-series-product/.meta/solutions/Series.pm
trackler-2.2.1.125 tracks/perl5/exercises/largest-series-product/.meta/solutions/Series.pm
trackler-2.2.1.124 tracks/perl5/exercises/largest-series-product/.meta/solutions/Series.pm
trackler-2.2.1.123 tracks/perl5/exercises/largest-series-product/.meta/solutions/Series.pm
trackler-2.2.1.122 tracks/perl5/exercises/largest-series-product/.meta/solutions/Series.pm
trackler-2.2.1.121 tracks/perl5/exercises/largest-series-product/.meta/solutions/Series.pm
trackler-2.2.1.120 tracks/perl5/exercises/largest-series-product/.meta/solutions/Series.pm