aboutsummaryrefslogtreecommitdiff
path: root/challenge-073
diff options
context:
space:
mode:
authorMohammad S Anwar <mohammad.anwar@yahoo.com>2020-08-16 17:32:26 +0100
committerMohammad S Anwar <mohammad.anwar@yahoo.com>2020-08-16 17:32:26 +0100
commitf7132b3ed495f48780090536b6461ebb339d0fc0 (patch)
tree7ad6483211ef94bfd0030d26049eb7d0817889a3 /challenge-073
parentcc053ff8fa0d8b64f8ab260139dbb78a8b664fbf (diff)
downloadperlweeklychallenge-club-f7132b3ed495f48780090536b6461ebb339d0fc0.tar.gz
perlweeklychallenge-club-f7132b3ed495f48780090536b6461ebb339d0fc0.tar.bz2
perlweeklychallenge-club-f7132b3ed495f48780090536b6461ebb339d0fc0.zip
- Added solutions by Lance Wicks.
Diffstat (limited to 'challenge-073')
-rw-r--r--challenge-073/lance-wicks/blog.txt1
-rw-r--r--challenge-073/lance-wicks/blog1.txt1
-rw-r--r--challenge-073/lance-wicks/perl/Sliding.pm23
-rw-r--r--challenge-073/lance-wicks/perl/ch-1.pl54
4 files changed, 79 insertions, 0 deletions
diff --git a/challenge-073/lance-wicks/blog.txt b/challenge-073/lance-wicks/blog.txt
new file mode 100644
index 0000000000..17c25f22ce
--- /dev/null
+++ b/challenge-073/lance-wicks/blog.txt
@@ -0,0 +1 @@
+https://lancewicks.com/2020/08/16/perl-weekly-challenge-73/
diff --git a/challenge-073/lance-wicks/blog1.txt b/challenge-073/lance-wicks/blog1.txt
new file mode 100644
index 0000000000..bd47d6c346
--- /dev/null
+++ b/challenge-073/lance-wicks/blog1.txt
@@ -0,0 +1 @@
+https://www.youtube.com/watch?v=OA7dCY7vDJo
diff --git a/challenge-073/lance-wicks/perl/Sliding.pm b/challenge-073/lance-wicks/perl/Sliding.pm
new file mode 100644
index 0000000000..38b476dc25
--- /dev/null
+++ b/challenge-073/lance-wicks/perl/Sliding.pm
@@ -0,0 +1,23 @@
+package Sliding;
+
+use List::Util 'min';
+
+sub min_from_windows {
+ my ($self, %args) = @_;
+ my @numbers = @{$args{array_of_numbers}};
+ my $length = @numbers;
+
+ my $the_end = $length - $args{window_size};
+
+ my @array_of_mins;
+ for my $i (0 .. $the_end){
+ my @slice = @numbers[$i .. ($i-1) + $args{window_size}];
+
+ push @array_of_mins, min @slice;
+
+ }
+
+ return \@array_of_mins;
+}
+
+1;
diff --git a/challenge-073/lance-wicks/perl/ch-1.pl b/challenge-073/lance-wicks/perl/ch-1.pl
new file mode 100644
index 0000000000..b5cdedf7d3
--- /dev/null
+++ b/challenge-073/lance-wicks/perl/ch-1.pl
@@ -0,0 +1,54 @@
+use Test2::V0 -target => 'Sliding';
+
+subtest 'min_from_windows example' => sub {
+ my @array = ( 1, 5, 0, 2, 9, 3, 7, 6, 4, 8 );
+ my $window_size = 3;
+ my @expected = ( 0, 0, 0, 2, 3, 3, 4, 4 );
+
+ is $CLASS->min_from_windows(
+ array_of_numbers => \@array,
+ window_size => $window_size,
+ ),
+ \@expected;
+};
+
+subtest 'min_from_windows test two' => sub {
+ my @array = ( 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, );
+ my $window_size = 3;
+ my @expected = ( 0, 1, 2, 3, 4, 5, 6, 7 );
+
+ is $CLASS->min_from_windows(
+ array_of_numbers => \@array,
+ window_size => $window_size,
+ ),
+ \@expected;
+
+};
+
+subtest 'min_from_windows test three' => sub {
+ my @array = ( 0, 1, 2, 3, 4, 5 );
+ my $window_size = 2;
+ my @expected = ( 0, 1, 2, 3, 4 );
+
+ is $CLASS->min_from_windows(
+ array_of_numbers => \@array,
+ window_size => $window_size,
+ ),
+ \@expected;
+
+};
+
+subtest 'min_from_windows test three' => sub {
+ my @array = ( 99, 1, 32, 4, 5, 5 );
+ my $window_size = 2;
+ my @expected = ( 1, 1, 4, 4, 5 );
+
+ is $CLASS->min_from_windows(
+ array_of_numbers => \@array,
+ window_size => $window_size,
+ ),
+ \@expected;
+
+};
+
+done_testing;