aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMohammad S Anwar <Mohammad.Anwar@yahoo.com>2020-09-15 16:45:15 +0100
committerGitHub <noreply@github.com>2020-09-15 16:45:15 +0100
commitd96fb9898ed1c9d8ccfbbe5d05faf700ded47524 (patch)
treee3e4ddfceb0bee1c95caa8ed529bb33a9e6deed5
parent9fe8e8251e7e6d2725ec5592b4ee3a804ae3390f (diff)
parent80b24be57009c816f48773770b077b8ecb674124 (diff)
downloadperlweeklychallenge-club-d96fb9898ed1c9d8ccfbbe5d05faf700ded47524.tar.gz
perlweeklychallenge-club-d96fb9898ed1c9d8ccfbbe5d05faf700ded47524.tar.bz2
perlweeklychallenge-club-d96fb9898ed1c9d8ccfbbe5d05faf700ded47524.zip
Merge pull request #2302 from choroba/echo078
Solve 078 Leader Element and Left Rotation by E. Choroba
-rwxr-xr-xchallenge-078/e-choroba/perl/ch-1.pl25
-rwxr-xr-xchallenge-078/e-choroba/perl/ch-2.pl22
2 files changed, 47 insertions, 0 deletions
diff --git a/challenge-078/e-choroba/perl/ch-1.pl b/challenge-078/e-choroba/perl/ch-1.pl
new file mode 100755
index 0000000000..ba8aac506b
--- /dev/null
+++ b/challenge-078/e-choroba/perl/ch-1.pl
@@ -0,0 +1,25 @@
+#!/usr/bin/perl
+use warnings;
+use strict;
+
+sub leader_element {
+ my ($list) = @_;
+ return [] unless @$list;
+
+ my @leaders = $list->[-1];
+ for my $n (reverse @$list) {
+ unshift @leaders, $n if $n > $leaders[0];
+ }
+
+ return \@leaders
+}
+
+use Test::More tests => 2;
+
+is_deeply leader_element([9, 10, 7, 5, 6, 1]),
+ [10, 7, 6, 1],
+ 'example 1';
+
+is_deeply leader_element([3, 4, 5]),
+ [5],
+ 'example 2';
diff --git a/challenge-078/e-choroba/perl/ch-2.pl b/challenge-078/e-choroba/perl/ch-2.pl
new file mode 100755
index 0000000000..606e94c2a6
--- /dev/null
+++ b/challenge-078/e-choroba/perl/ch-2.pl
@@ -0,0 +1,22 @@
+#!/usr/bin/perl
+use warnings;
+use strict;
+
+sub left_rotation {
+ my ($list, $rotations) = @_;
+ return [ map {
+ [ @$list[$_ .. $#$list], @$list[0 .. $_ - 1] ]
+ } @$rotations ]
+}
+
+use Test::More tests => 2;
+
+is_deeply left_rotation([10, 20, 30, 40, 50], [3, 4]),
+ [ [40, 50, 10, 20, 30],
+ [50, 10, 20, 30, 40] ];
+
+is_deeply left_rotation([ 7, 4, 2, 6, 3 ], [1, 3, 4]),
+ [ [ 4, 2, 6, 3, 7 ],
+ [ 6, 3, 7, 4, 2 ],
+ [ 3, 7, 4, 2, 6 ] ];
+