aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMohammad S Anwar <Mohammad.Anwar@yahoo.com>2020-09-14 10:23:37 +0100
committerGitHub <noreply@github.com>2020-09-14 10:23:37 +0100
commit00a7db8204759539981f2d5da154b7d4c02d6d01 (patch)
treed1b554c18d49ecdcc6fa9d75e466242d8c7ef5c8
parentebe8aba2ded7332914439e331a3eb96b217861c3 (diff)
parente893e37a5585f8dba338772b545ba45a7e0cf089 (diff)
downloadperlweeklychallenge-club-00a7db8204759539981f2d5da154b7d4c02d6d01.tar.gz
perlweeklychallenge-club-00a7db8204759539981f2d5da154b7d4c02d6d01.tar.bz2
perlweeklychallenge-club-00a7db8204759539981f2d5da154b7d4c02d6d01.zip
Merge pull request #2287 from PerlBoy1967/branch-for-challenge-078
Task 1 & 2
-rwxr-xr-xchallenge-078/perlboy1967/perl/ch-1.pl33
-rwxr-xr-xchallenge-078/perlboy1967/perl/ch-2.pl34
2 files changed, 67 insertions, 0 deletions
diff --git a/challenge-078/perlboy1967/perl/ch-1.pl b/challenge-078/perlboy1967/perl/ch-1.pl
new file mode 100755
index 0000000000..1e5fcdc1d5
--- /dev/null
+++ b/challenge-078/perlboy1967/perl/ch-1.pl
@@ -0,0 +1,33 @@
+#!/usr/bin/perl
+
+# Perl Weekly Challenge - 078
+# - https://perlweeklychallenge.org/blog/perl-weekly-challenge-078/
+#
+# Task 1 - Leader Element
+#
+# Author: Niels 'PerlBoy' van Dijke
+
+use strict;
+use warnings;
+
+use List::Util qw(max);
+
+my @A = (9, 10, 7, 5, 6, 1);
+
+sub findLeaderElement {
+ my ($arL) = @_;
+
+ my $maxIdx = scalar(@$arL) - 1;
+
+ my %maxLoc;
+ my @max = map {
+ my $max = max(@$arL[$_ .. $maxIdx]);
+ push(@{$maxLoc{$max}}, $_);
+ $max;
+ } reverse (0 .. $maxIdx);
+
+ return @$arL[$maxLoc{max(keys %maxLoc)}[0] .. $maxIdx];
+}
+
+printf "Input: (%s)\n", join(', ', @A);
+printf "Output: (%s)\n", join(', ', findLeaderElement(\@A));
diff --git a/challenge-078/perlboy1967/perl/ch-2.pl b/challenge-078/perlboy1967/perl/ch-2.pl
new file mode 100755
index 0000000000..97ac98e820
--- /dev/null
+++ b/challenge-078/perlboy1967/perl/ch-2.pl
@@ -0,0 +1,34 @@
+#!/usr/bin/perl
+
+# Perl Weekly Challenge - 078
+# - https://perlweeklychallenge.org/blog/perl-weekly-challenge-078/
+#
+# Task 2 - Left Rotation
+#
+# Author: Niels 'PerlBoy' van Dijke
+
+use strict;
+use warnings;
+
+my @A = qw(7 4 2 6 3);
+my @B = qw(1 3 4);
+
+sub rotateArray {
+ my ($arL, $arR) = @_;
+
+ my @res;
+
+ my $maxIdx = scalar(@$arL) - 1 ;
+
+ foreach my $r (@$arR) {
+ $r %= ($maxIdx + 1);
+ push(@res, [@$arL[$r .. $maxIdx], @$arL[0 .. $r - 1]]);
+ }
+
+ return @res;
+}
+
+printf "Input:\n\t\@A = (%s)\n\t\@B = (%s)\n",
+ join(', ', @A), join(', ', @B);
+printf "Output:\n%s\n",
+ join("\n", map { "\t[".join(" ", @$_)."]" } rotateArray(\@A, \@B));