diff options
| -rw-r--r-- | challenge-145/alexander-pankoff/perl/ch-1.pl | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/challenge-145/alexander-pankoff/perl/ch-1.pl b/challenge-145/alexander-pankoff/perl/ch-1.pl new file mode 100644 index 0000000000..cdb049522e --- /dev/null +++ b/challenge-145/alexander-pankoff/perl/ch-1.pl @@ -0,0 +1,30 @@ +#!/usr/bin/env perl +use strict; +use warnings; +use feature qw'say signatures'; +no warnings qw'experimental::signatures'; + +use Data::Dumper; +use List::Util qw(sum0 min); + +run() unless caller(); + +sub run() { + my @a = ( 1, 2, 3 ); + my @b = ( 4, 5, 6 ); + + my $dot_product = dot_product( \@a, \@b ); + + say $dot_product; + +} + +sub dot_product ( $a, $b ) { + sum0( zip_with( sub ( $a, $b ) { $a * $b }, $a, $b ) ); + +} + +sub zip_with ( $op, $as, $bs ) { + map { $op->($as->[$_], $bs->[$_] ) } 0 .. min( $#{$as}, $#{$bs} ); +} + |
