aboutsummaryrefslogtreecommitdiff
path: root/challenge-071/perlboy1967/perl/ch-1.pl
blob: c4fb104fd0d4afa648780aaf469ed4dfa4858707 (plain)
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
#!/usr/bin/perl

# Perl Weekly Challenge - 071
#
# Task 1 - Peak Element
#
# Author: Niels 'PerlBoy' van Dijke

use strict;
use warnings;

my ($N) = @ARGV;

die "Argument must be a positive number ( 1 <= N <= 50)"
  unless (defined $N && $N =~ m#^[1-9][0-9]*$# and $N <= 50);

my @iPool = (1 .. 50);
my @array = map { splice(@iPool, int(rand(scalar(@iPool))), 1) } (1 .. $N);

my @peak = 
  map { $array[$_] } 
    grep { $array[$_] 
      if ($array[$_] > ($array[$_ + 1] // 0) and
          $array[$_] > ($array[$_ - 1] // 0));
    } (0 .. $N - 2); 

printf "Array: [%s]\n", join(', ', @array);
printf "Peak: [%s]\n", join(', ', @peak);