exercism-perl5

Repository for my Perl 5 Exercism exercises
git clone git://git.samirparikh.com/exercism-perl5
Log | Files | Refs | README

LargestSeriesProduct.pm (728B) - raw


      1 package LargestSeriesProduct;
      2 use strict;
      3 use warnings;
      4 use List::Util qw( product );
      5 use Exporter qw<import>;
      6 our @EXPORT_OK = qw<largest_product>;
      7 
      8 sub largest_product {
      9   my ($input) = @_;
     10   die "digits input must only contain digits"
     11     if ($input->{digits} =~ m/\D+/);
     12   die "span must be greater than zero" if ($input->{span} < 0);
     13   my @digits = split //, $input->{digits};
     14   my $length = scalar @digits;
     15   die "span must be smaller than string length"
     16     if ($input->{span} > $length);
     17   my $max = 0;
     18   foreach my $i (0 .. $length - $input->{span}) {
     19     my @substring = @digits[$i .. ($i + $input->{span} - 1)];
     20     my $product = product @substring;
     21     $max = $product if ($product > $max);
     22   }
     23   return $max;
     24 }
     25 
     26 1;