diff options
| author | Dave Cross <dave@dave.org.uk> | 2020-09-14 09:44:33 +0100 |
|---|---|---|
| committer | Dave Cross <dave@dave.org.uk> | 2020-09-14 09:44:33 +0100 |
| commit | b893c6f6db580f161759fb225081a73b671dcad6 (patch) | |
| tree | a49263b52b69bd98076dd0a9cb232162d04edf8a /challenge-078/dave-cross | |
| parent | 346f39428887cbecd377e77620470d254c0b2abc (diff) | |
| download | perlweeklychallenge-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.pl | 20 | ||||
| -rw-r--r-- | challenge-078/dave-cross/perl/ch-2.pl | 20 |
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]; +} |
