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