diff options
| author | Mohammad S Anwar <Mohammad.Anwar@yahoo.com> | 2020-09-14 10:23:37 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2020-09-14 10:23:37 +0100 |
| commit | 00a7db8204759539981f2d5da154b7d4c02d6d01 (patch) | |
| tree | d1b554c18d49ecdcc6fa9d75e466242d8c7ef5c8 | |
| parent | ebe8aba2ded7332914439e331a3eb96b217861c3 (diff) | |
| parent | e893e37a5585f8dba338772b545ba45a7e0cf089 (diff) | |
| download | perlweeklychallenge-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-x | challenge-078/perlboy1967/perl/ch-1.pl | 33 | ||||
| -rwxr-xr-x | challenge-078/perlboy1967/perl/ch-2.pl | 34 |
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)); |
