diff options
| author | Mohammad S Anwar <Mohammad.Anwar@yahoo.com> | 2021-02-16 07:00:01 +0000 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2021-02-16 07:00:01 +0000 |
| commit | 7fdf80eed0545f6b6df3c815d33d32b915026d59 (patch) | |
| tree | b99fe3c609703f3a7148afced3b6e56fb779d007 | |
| parent | 316a0b6696ceadba176047467d028f85024eb88d (diff) | |
| parent | d01fda7f4dbd80462485dc204b2865c9d0377079 (diff) | |
| download | perlweeklychallenge-club-7fdf80eed0545f6b6df3c815d33d32b915026d59.tar.gz perlweeklychallenge-club-7fdf80eed0545f6b6df3c815d33d32b915026d59.tar.bz2 perlweeklychallenge-club-7fdf80eed0545f6b6df3c815d33d32b915026d59.zip | |
Merge pull request #3540 from gnustavo/100
Add Gustavo Chaves's solutions to challenge 100
| -rwxr-xr-x | challenge-100/gustavo-chaves/perl/ch-1.pl | 44 | ||||
| -rwxr-xr-x | challenge-100/gustavo-chaves/perl/ch-2.pl | 41 |
2 files changed, 85 insertions, 0 deletions
diff --git a/challenge-100/gustavo-chaves/perl/ch-1.pl b/challenge-100/gustavo-chaves/perl/ch-1.pl new file mode 100755 index 0000000000..0e9a618526 --- /dev/null +++ b/challenge-100/gustavo-chaves/perl/ch-1.pl @@ -0,0 +1,44 @@ +#!/usr/bin/env perl + +# https://perlweeklychallenge.org/blog/perl-weekly-challenge-100/ +# TASK #1 › Fun Time + +use 5.030; +use warnings; + +my $input = shift; + +if ($input =~ /^(?<hour>\d{2}):(?<minute>\d{2})$/) { + if ($+{hour} eq '00') { + print '12'; + } elsif ($+{hour} le '12') { + print $+{hour}; + } else { + printf '%02d', $+{hour} - 12; + } + print ":$+{minute}"; + if ($+{hour} lt '12') { + print 'am'; + } else { + print 'pm'; + } +} elsif ($input =~ /^(?<hour>\d{2}):(?<minute>\d{2}) ?(?<period>am|pm)$/) { + if ($+{period} eq 'am') { + if ($+{hour} eq '12') { + print '00'; + } else { + print $+{hour}; + } + } else { + if ($+{hour} eq '12') { + print $+{hour}; + } else { + printf '%02d', $+{hour} + 12; + } + } + print ":$+{minute}"; +} else { + die "Invalid time '$input'\n"; +} + +print "\n"; diff --git a/challenge-100/gustavo-chaves/perl/ch-2.pl b/challenge-100/gustavo-chaves/perl/ch-2.pl new file mode 100755 index 0000000000..e3231e4f5b --- /dev/null +++ b/challenge-100/gustavo-chaves/perl/ch-2.pl @@ -0,0 +1,41 @@ +#!/usr/bin/env perl + +# https://perlweeklychallenge.org/blog/perl-weekly-challenge-100/ +# TASK #2 › Triangle Sum + +use 5.030; +use warnings; + +my @triangles = ( + [ [1], [2,4], [6,4,9], [5,1,7,2] ], + [ [3], [3,1], [5,2,3], [4,3,1,3] ], +); + +for my $i (0 .. $#triangles) { + say "$i: ", triangle_sum($triangles[$i]); +} + +sub triangle_sum { + my ($triangle) = @_; + + my $min = 2 ** 30; + + my $find_minimum_sum = sub { + my ($row, $col, $acc) = @_; + + $acc += $triangle->[$row][$col]; + + if ($row == $#$triangle) { + $min = $acc if $acc < $min; + } elsif ($min > $acc) { + __SUB__->($row+1, $col, $acc); + __SUB__->($row+1, $col+1, $acc); + } + return; + }; + + $find_minimum_sum->(0, 0, 0); + + return $min; +} + |
