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.119 tracks/perl5/exercises/largest-series-product/.meta/solutions/Series.pm
trackler-2.2.1.118 tracks/perl5/exercises/largest-series-product/.meta/solutions/Series.pm
trackler-2.2.1.117 tracks/perl5/exercises/largest-series-product/.meta/solutions/Series.pm
trackler-2.2.1.116 tracks/perl5/exercises/largest-series-product/.meta/solutions/Series.pm
trackler-2.2.1.115 tracks/perl5/exercises/largest-series-product/.meta/solutions/Series.pm
trackler-2.2.1.114 tracks/perl5/exercises/largest-series-product/.meta/solutions/Series.pm
trackler-2.2.1.113 tracks/perl5/exercises/largest-series-product/.meta/solutions/Series.pm
trackler-2.2.1.111 tracks/perl5/exercises/largest-series-product/.meta/solutions/Series.pm
trackler-2.2.1.110 tracks/perl5/exercises/largest-series-product/.meta/solutions/Series.pm
trackler-2.2.1.109 tracks/perl5/exercises/largest-series-product/.meta/solutions/Series.pm
trackler-2.2.1.108 tracks/perl5/exercises/largest-series-product/.meta/solutions/Series.pm
trackler-2.2.1.107 tracks/perl5/exercises/largest-series-product/.meta/solutions/Series.pm
trackler-2.2.1.106 tracks/perl5/exercises/largest-series-product/.meta/solutions/Series.pm