aboutsummaryrefslogtreecommitdiff
path: root/challenge-078/dave-cross
diff options
context:
space:
mode:
authorDave Cross <dave@dave.org.uk>2020-09-14 09:44:33 +0100
committerDave Cross <dave@dave.org.uk>2020-09-14 09:44:33 +0100
commitb893c6f6db580f161759fb225081a73b671dcad6 (patch)
treea49263b52b69bd98076dd0a9cb232162d04edf8a /challenge-078/dave-cross
parent346f39428887cbecd377e77620470d254c0b2abc (diff)
downloadperlweeklychallenge-club-b893c6f6db580f161759fb225081a73b671dcad6.tar.gz
perlweeklychallenge-club-b893c6f6db580f161759fb225081a73b671dcad6.tar.bz2
perlweeklychallenge-club-b893c6f6db580f161759fb225081a73b671dcad6.zip
Solutions to challenge #78
Diffstat (limited to 'challenge-078/dave-cross')
-rw-r--r--challenge-078/dave-cross/perl/ch-1.pl20
-rw-r--r--challenge-078/dave-cross/perl/ch-2.pl20
2 files changed, 40 insertions, 0 deletions
diff --git a/challenge-078/dave-cross/perl/ch-1.pl b/challenge-078/dave-cross/perl/ch-1.pl
new file mode 100644
index 0000000000..c61d1b6455
--- /dev/null
+++ b/challenge-078/dave-cross/perl/ch-1.pl
@@ -0,0 +1,20 @@
+#!/usr/bin/perl
+
+use strict;
+use warnings;
+use feature 'say';
+
+use List::Util 'all';
+
+my @leaders = map { $ARGV[$_] }
+ grep { is_leader($_, @ARGV) } 0 .. $#ARGV;
+
+say '(', join(', ', @leaders), ')';
+
+sub is_leader {
+ my ($needle, @haystack) = @_;
+
+ return 1 if $needle == $#haystack;
+
+ return all { $haystack[$needle] > $_ } @haystack[$needle + 1 .. $#haystack];
+}
diff --git a/challenge-078/dave-cross/perl/ch-2.pl b/challenge-078/dave-cross/perl/ch-2.pl
new file mode 100644
index 0000000000..601ddd9520
--- /dev/null
+++ b/challenge-078/dave-cross/perl/ch-2.pl
@@ -0,0 +1,20 @@
+#!/usr/bin/perl
+
+use strict;
+use warnings;
+use feature 'say';
+
+my ($array, $idx) = @ARGV;
+my @array = split /,/, $array;
+my @idx = split /,/, $idx;
+
+for (@idx) {
+ my @rotated = rotate($_, @array);
+ say '[', join(', ', @rotated), ']';
+}
+
+sub rotate {
+ my ($idx, @array) = @_;
+
+ return @array[$idx .. $#array], @array[0 .. $idx - 1];
+}