aboutsummaryrefslogtreecommitdiff
path: root/challenge-152
diff options
context:
space:
mode:
authorMohammad S Anwar <mohammad.anwar@yahoo.com>2022-02-17 18:07:09 +0000
committerMohammad S Anwar <mohammad.anwar@yahoo.com>2022-02-17 18:07:09 +0000
commit7a49fe037862e412389471f69ca4814083c863ca (patch)
tree17abb5774d9344264aba1173c7b5ea675c357ec5 /challenge-152
parentcecb0a9230ee9b7152b708e5a9fa5a676c9735e5 (diff)
downloadperlweeklychallenge-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.pl24
-rw-r--r--challenge-152/robert-dicicco/perl/ch-2.pl51
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";