diff options
| author | Mohammad S Anwar <mohammad.anwar@yahoo.com> | 2020-08-16 17:32:26 +0100 |
|---|---|---|
| committer | Mohammad S Anwar <mohammad.anwar@yahoo.com> | 2020-08-16 17:32:26 +0100 |
| commit | f7132b3ed495f48780090536b6461ebb339d0fc0 (patch) | |
| tree | 7ad6483211ef94bfd0030d26049eb7d0817889a3 /challenge-073 | |
| parent | cc053ff8fa0d8b64f8ab260139dbb78a8b664fbf (diff) | |
| download | perlweeklychallenge-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.txt | 1 | ||||
| -rw-r--r-- | challenge-073/lance-wicks/blog1.txt | 1 | ||||
| -rw-r--r-- | challenge-073/lance-wicks/perl/Sliding.pm | 23 | ||||
| -rw-r--r-- | challenge-073/lance-wicks/perl/ch-1.pl | 54 |
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; |
