aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMohammad S Anwar <Mohammad.Anwar@yahoo.com>2020-08-13 11:44:37 +0100
committerGitHub <noreply@github.com>2020-08-13 11:44:37 +0100
commit2a6dc467887bb89a756c10ba11c405fbf6238969 (patch)
treeee8d8ec4f52c4afa681f44055ce99a3c9d2632d7
parent9fe9442bd044a0b85b874c1a19ccee562682992f (diff)
parentce03143ce07f1619f05221a4e3760a28cf19a917 (diff)
downloadperlweeklychallenge-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-xchallenge-071/perlboy1967/perl/ch-1.pl5
-rwxr-xr-xchallenge-073/perlboy1967/perl/ch-1.pl35
-rwxr-xr-xchallenge-073/perlboy1967/perl/ch-2.pl32
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);