diff options
| author | Mohammad S Anwar <mohammad.anwar@yahoo.com> | 2022-02-17 18:07:09 +0000 |
|---|---|---|
| committer | Mohammad S Anwar <mohammad.anwar@yahoo.com> | 2022-02-17 18:07:09 +0000 |
| commit | 7a49fe037862e412389471f69ca4814083c863ca (patch) | |
| tree | 17abb5774d9344264aba1173c7b5ea675c357ec5 /challenge-152 | |
| parent | cecb0a9230ee9b7152b708e5a9fa5a676c9735e5 (diff) | |
| download | perlweeklychallenge-club-7a49fe037862e412389471f69ca4814083c863ca.tar.gz perlweeklychallenge-club-7a49fe037862e412389471f69ca4814083c863ca.tar.bz2 perlweeklychallenge-club-7a49fe037862e412389471f69ca4814083c863ca.zip | |
- Added solutions by Robert DiCicco.
Diffstat (limited to 'challenge-152')
| -rw-r--r-- | challenge-152/robert-dicicco/perl/ch-1.pl | 24 | ||||
| -rw-r--r-- | challenge-152/robert-dicicco/perl/ch-2.pl | 51 |
2 files changed, 75 insertions, 0 deletions
diff --git a/challenge-152/robert-dicicco/perl/ch-1.pl b/challenge-152/robert-dicicco/perl/ch-1.pl new file mode 100644 index 0000000000..d8fcd7c5d9 --- /dev/null +++ b/challenge-152/robert-dicicco/perl/ch-1.pl @@ -0,0 +1,24 @@ +#!perl.exe + +use strict; +use warnings; +use List::Util qw/min sum/; + +# Author: Robert DiCicco +# Date: 14-FEB-2022 +# Challenge #152 Triangle Sum Path ( Perl ) + +my @output; +#my @triangle = ([5], [2,3], [4,1,5], [0,1,2,3], [7,2,4,1,9]); +my @triangle = ([1], [5,3], [2,3,4], [7,1,0,2], [6,4,5,2,8]); + +print "Array : "; +foreach my $subarray(@triangle){ + my $val = min(@$subarray); + push(@output, $val); + print "[@$subarray] "; +} +print "\n"; + +my $total = sum @output; +print "Minimum Sum Path @output = $total\n"; diff --git a/challenge-152/robert-dicicco/perl/ch-2.pl b/challenge-152/robert-dicicco/perl/ch-2.pl new file mode 100644 index 0000000000..6579a08a5e --- /dev/null +++ b/challenge-152/robert-dicicco/perl/ch-2.pl @@ -0,0 +1,51 @@ +#!perl.exe + +use strict; +use warnings; +use List::Util qw/min max/; +use feature qw/say/; + +# Author: Robert DiCicco +# Date: 14-FEB-2022 +# Challenge #151 Rectangle Area (Perl) + +# get area of rectangle +sub area { + my $box = $_[0]; + my $xval = abs( @$box[0] ) + abs( @$box[2] ); + my $yval = abs( @$box[1] ) + abs( @$box[3] ); + return ( $xval * $yval ); +} + +# get area of overlapping rectangle +sub overlap { + my $r1 = $_[0]; + my $r2 = $_[1]; + my $x_dist = ( min( @$r1[2], @$r2[2] ) - max( @$r1[0], @$r2[0] ) ); + my $y_dist = ( min( @$r1[3], @$r2[3] ) - max( @$r1[1], @$r2[1] ) ); + my $overlap = 0; + + if ( $x_dist > 0 and $y_dist > 0 ) { + $overlap = $x_dist * $y_dist; + } + + return $overlap; +} + +my @rec1 = ( ( -3, -1 ), ( 1, 3 ) ); +my @rec2 = ( ( -1, -3 ), ( 2, 2 ) ); + +# my @rec1 = ((-1,0), (2,2)); +# my @rec2 = ((0,-1), (4,4)); +my $a = area( \@rec1 ); +my $b = area( \@rec2 ); + +print "($rec1[0],$rec1[1]),($rec1[2],$rec1[3]) Area = $a\n"; +print "($rec2[0],$rec2[1]),($rec2[2],$rec2[3]) Area = $b\n"; +my $ov = overlap( \@rec1, \@rec2 ); + +print "Overlap Area = $ov\n"; + +my $total = $a + $b - $ov; + +print "Total Area = $a + $b - $ov = $total\n"; |
