diff options
| author | Mohammad S Anwar <Mohammad.Anwar@yahoo.com> | 2020-08-13 11:44:37 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2020-08-13 11:44:37 +0100 |
| commit | 2a6dc467887bb89a756c10ba11c405fbf6238969 (patch) | |
| tree | ee8d8ec4f52c4afa681f44055ce99a3c9d2632d7 | |
| parent | 9fe9442bd044a0b85b874c1a19ccee562682992f (diff) | |
| parent | ce03143ce07f1619f05221a4e3760a28cf19a917 (diff) | |
| download | perlweeklychallenge-club-2a6dc467887bb89a756c10ba11c405fbf6238969.tar.gz perlweeklychallenge-club-2a6dc467887bb89a756c10ba11c405fbf6238969.tar.bz2 perlweeklychallenge-club-2a6dc467887bb89a756c10ba11c405fbf6238969.zip | |
Merge pull request #2072 from PerlBoy1967/branch-for-challenge-073
Branch for challenge 073
| -rwxr-xr-x | challenge-071/perlboy1967/perl/ch-1.pl | 5 | ||||
| -rwxr-xr-x | challenge-073/perlboy1967/perl/ch-1.pl | 35 | ||||
| -rwxr-xr-x | challenge-073/perlboy1967/perl/ch-2.pl | 32 |
3 files changed, 70 insertions, 2 deletions
diff --git a/challenge-071/perlboy1967/perl/ch-1.pl b/challenge-071/perlboy1967/perl/ch-1.pl index eb84290645..c4fb104fd0 100755 --- a/challenge-071/perlboy1967/perl/ch-1.pl +++ b/challenge-071/perlboy1967/perl/ch-1.pl @@ -12,7 +12,7 @@ use warnings; my ($N) = @ARGV; die "Argument must be a positive number ( 1 <= N <= 50)" - unless (defined $N && $N =~ m#^[2-9][0-9]*# and $N <= 50); + unless (defined $N && $N =~ m#^[1-9][0-9]*$# and $N <= 50); my @iPool = (1 .. 50); my @array = map { splice(@iPool, int(rand(scalar(@iPool))), 1) } (1 .. $N); @@ -20,7 +20,8 @@ my @array = map { splice(@iPool, int(rand(scalar(@iPool))), 1) } (1 .. $N); my @peak = map { $array[$_] } grep { $array[$_] - if ($array[$_] > ($array[$_ + 1] // 0)); + if ($array[$_] > ($array[$_ + 1] // 0) and + $array[$_] > ($array[$_ - 1] // 0)); } (0 .. $N - 2); printf "Array: [%s]\n", join(', ', @array); diff --git a/challenge-073/perlboy1967/perl/ch-1.pl b/challenge-073/perlboy1967/perl/ch-1.pl new file mode 100755 index 0000000000..abe3d9e81e --- /dev/null +++ b/challenge-073/perlboy1967/perl/ch-1.pl @@ -0,0 +1,35 @@ +#!/usr/bin/perl + +# Perl Weekly Challenge - 073 +# - https://perlweeklychallenge.org/blog/perl-weekly-challenge-073/ +# +# Task 1 - Min Sliding Window +# +# Author: Niels 'PerlBoy' van Dijke + +use strict; +use warnings; + +use List::Util qw(min); + +my ($S) = @ARGV; + +die "S must be a positive integer" + unless (defined $S and $S =~ m#^[1-9][0-9]*$#); + +my @S; + +# Create list with random integer values +my @A = map {int(rand(100))} (1 .. $S * 3); + +printf "Input:\n\t\@A = (%s)\n\t\$S = %d\n\n", join(', ', @A), $S; + +for (my $i = 0; $i < scalar(@A) - $S + 1; $i++) { + my @s = @A[$i .. $i + $S - 1]; + + push(@S, min(@s)); + + printf "min(%s) = %d\n", join(', ',@s), $S[-1]; +} + +printf "\nOutput:\n\t\@S = (%s)\n", join(', ', @S); diff --git a/challenge-073/perlboy1967/perl/ch-2.pl b/challenge-073/perlboy1967/perl/ch-2.pl new file mode 100755 index 0000000000..55ecb89b0f --- /dev/null +++ b/challenge-073/perlboy1967/perl/ch-2.pl @@ -0,0 +1,32 @@ +#!/usr/bin/perl + +# Perl Weekly Challenge - 073 +# - https://perlweeklychallenge.org/blog/perl-weekly-challenge-073/ +# +# Task 2 - Smallest Neighbour +# +# Author: Niels 'PerlBoy' van Dijke + +use strict; +use warnings; + +use List::Util qw(min); + +my @N = (0); + +# Create list with random integer values +my @A = map {int(rand(100))} (1 .. 10); + +printf "Input:\n\t\@A = (%s)\n\n", join(', ', @A); + +for (my $i = 1; $i < scalar(@A); $i++) { + my @s = @A[0 .. $i-1]; + my $min = min(@s); + + push(@N, $min < $A[$i] ? $min : 0); + + printf "%d\tmin(%s) = %d, %d < %d ? %d : 0 => %d\n", + $A[$i], join(', ',@s), $min, $A[$i], $min, $min, $N[-1]; +} + +printf "\nOutput:\n\t\@S = (%s)\n", join(', ', @N); |
