diff options
| author | Alexander Pankoff <ccntrq@screenri.de> | 2020-09-29 13:58:19 +0200 |
|---|---|---|
| committer | Alexander Pankoff <ccntrq@screenri.de> | 2020-10-04 15:42:50 +0200 |
| commit | 859f378d923eabc6959e510328cf89226648ab3c (patch) | |
| tree | 22aadd6fbdeed372d5db08311b00166a40424d4d | |
| parent | 88c67bdde02feaec0dee0c7d7f091c5bf937c0a8 (diff) | |
| download | perlweeklychallenge-club-859f378d923eabc6959e510328cf89226648ab3c.tar.gz perlweeklychallenge-club-859f378d923eabc6959e510328cf89226648ab3c.tar.bz2 perlweeklychallenge-club-859f378d923eabc6959e510328cf89226648ab3c.zip | |
add perl solution for wk-080 ch-2
| -rw-r--r-- | challenge-080/alexander-pankoff/perl/ch-2.pl | 41 |
1 files changed, 41 insertions, 0 deletions
diff --git a/challenge-080/alexander-pankoff/perl/ch-2.pl b/challenge-080/alexander-pankoff/perl/ch-2.pl new file mode 100644 index 0000000000..b30e3c2cf0 --- /dev/null +++ b/challenge-080/alexander-pankoff/perl/ch-2.pl @@ -0,0 +1,41 @@ +#!/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(max sum0); + +say count_candies(@ARGV); + +sub count_candies(@candidates) { + my $descending; + my @candies; + for my $i ( 0 .. $#candidates ) { + + if ( $i > 0 && $candidates[ $i - 1 ] < $candidates[$i] ) { + $candies[$i] = $candies[ $i - 1 ] + 1; + } + else { + $candies[$i] = 1; + } + + if ( $i < $#candidates && $candidates[$i] > $candidates[ $i + 1 ] ) { + $descending++; + } + else { + while ($descending) { + my $candies = $descending + 1; + if ( $candies[ $i - $descending ] < $candies ) { + $candies[ $i - $descending ] = $candies; + } + $descending--; + } + } + } + return sum0(@candies); +} + |
