diff options
| author | Niels van Dijke <perlboy@cpan.org> | 2020-09-14 08:53:12 +0000 |
|---|---|---|
| committer | Niels van Dijke <perlboy@cpan.org> | 2020-09-14 08:53:12 +0000 |
| commit | e893e37a5585f8dba338772b545ba45a7e0cf089 (patch) | |
| tree | febf43a13380f42f84081fcadcb5f584431a1547 /challenge-078 | |
| parent | 38b6508053972ac52bceac7ebb370039bb1d98f8 (diff) | |
| download | perlweeklychallenge-club-e893e37a5585f8dba338772b545ba45a7e0cf089.tar.gz perlweeklychallenge-club-e893e37a5585f8dba338772b545ba45a7e0cf089.tar.bz2 perlweeklychallenge-club-e893e37a5585f8dba338772b545ba45a7e0cf089.zip | |
Task 1 & 2
Diffstat (limited to 'challenge-078')
| -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)); |
