/
ch-1.pl
49 lines (39 loc) · 864 Bytes
/
ch-1.pl
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
#!/usr/bin/perl
#
# Perl Weekly Challenge - 078
#
# Task #1: Leader Element
#
# https://perlweeklychallenge.org/blog/perl-weekly-challenge-078
#
use strict;
use warnings;
use List::Util qw(max);
printf("%s\n", join(", ", leader_elements(get_list($ARGV[0]))));
#
#
# METHODS
sub leader_elements {
my ($list) = @_;
my @leaders = ();
my $i = 0;
my @array = @$list;
foreach my $n (@array) {
if ($i == $#array) {
push @leaders, $n;
}
else {
push @leaders, $n
if ($n > max(@array[$i+1 .. $#array]));
}
$i++;
}
return @leaders;
}
sub get_list {
my ($l) = @_;
die "ERROR: Missing list.\n" unless defined $l;
die "ERROR: Invalid list [$l].\n" unless ($l =~ /^[\-?\d\,?\s?]+$/);
$l =~ s/\s//g;
return [ split /\,/, $l ];
}