diff options
| author | Alexander Pankoff <ccntrq@screenri.de> | 2020-09-14 08:53:51 +0200 |
|---|---|---|
| committer | Alexander Pankoff <ccntrq@screenri.de> | 2020-09-14 08:56:15 +0200 |
| commit | 5c70a9c510b543b6d65e14df896a0d5487c708bf (patch) | |
| tree | e53383f7b04e5dcde172356df698f67d1ab62fd7 /challenge-078 | |
| parent | 04a28803e9f289287215f984d06a44c97bab45ac (diff) | |
| download | perlweeklychallenge-club-5c70a9c510b543b6d65e14df896a0d5487c708bf.tar.gz perlweeklychallenge-club-5c70a9c510b543b6d65e14df896a0d5487c708bf.tar.bz2 perlweeklychallenge-club-5c70a9c510b543b6d65e14df896a0d5487c708bf.zip | |
add solution for leader element task from c-078
Diffstat (limited to 'challenge-078')
| -rw-r--r-- | challenge-078/alexander-pankoff/perl/ch-1.pl | 39 |
1 files changed, 39 insertions, 0 deletions
diff --git a/challenge-078/alexander-pankoff/perl/ch-1.pl b/challenge-078/alexander-pankoff/perl/ch-1.pl new file mode 100644 index 0000000000..9f4a8f1b5c --- /dev/null +++ b/challenge-078/alexander-pankoff/perl/ch-1.pl @@ -0,0 +1,39 @@ +#!/usr/bin/env perl +use v5.20; +use utf8; +use strict; +use warnings; +use autodie; +use feature qw(say signatures); +no warnings 'experimental::signatures'; + +use List::Util qw(all reduce); + +# You are given an array @A containing distinct integers. +# +# Write a script to find all leader elements in the array @A. Print (0) if none +# found. +# +# >> An element is leader if it is greater than all the elements to its right +# >> side. + +my @A = @ARGV; + +my @leaders = find_leader_elements(@A); +@leaders = (0) unless @leaders; + +say '(' . join( ', ', @leaders ) . ')'; + +exit; + +sub find_leader_elements(@list) { + my $leaders = reduce { + my @leaders = @$a; + my $current = $b; + + ( all { $current > $_ } @leaders ) ? [ $current, @leaders ] : $a + } + [], reverse @list; + + return @{$leaders}; +} |
