aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--challenge-206/zapwai/perl/ch-1.pl24
-rw-r--r--challenge-206/zapwai/perl/ch-2.pl32
2 files changed, 56 insertions, 0 deletions
diff --git a/challenge-206/zapwai/perl/ch-1.pl b/challenge-206/zapwai/perl/ch-1.pl
new file mode 100644
index 0000000000..98aa650673
--- /dev/null
+++ b/challenge-206/zapwai/perl/ch-1.pl
@@ -0,0 +1,24 @@
+use v5.30.0;
+my @time = ("00:00", "23:55", "20:00");
+#my @time= ("01:01", "00:50", "00:57");
+#my @time=("10:10", "09:30", "09:00", "09:55");
+print "Input: \@time = (".join(", ",@time).")\nOutput: ";
+my @MIN;
+foreach (@time) {
+ my ($hr, $mn) = split(":",$_);
+ push @MIN, $hr*60 + $mn;
+}
+my $min = 60*24;
+my ($ind1,$ind2);
+for my $i ( 0 .. $#MIN - 1) {
+ for my $j ( $i + 1 .. $#MIN) {
+ my $diff = abs $MIN[$i] - $MIN[$j];
+ $diff = 60*24 - $diff if ($diff > 30*24);
+ if ($min > $diff) {
+ $min = $diff;
+ $ind1 = $i;
+ $ind2 = $j;
+ }
+ }
+}
+say "$min\n$min min is the difference between times $time[$ind1] and $time[$ind2]";
diff --git a/challenge-206/zapwai/perl/ch-2.pl b/challenge-206/zapwai/perl/ch-2.pl
new file mode 100644
index 0000000000..e5724b4e85
--- /dev/null
+++ b/challenge-206/zapwai/perl/ch-2.pl
@@ -0,0 +1,32 @@
+use v5.30.0;
+my @arr = (1,2,3,4);
+sub min {
+ my ($a, $b) = @_;
+ ($a < $b) ? {return $a} : {return $b}
+}
+sub sum {
+ my ($a,$b,$c,$d) = @_;
+ min($a,$b) + min($c,$d)
+}
+my ($max,$out);
+for my $i (0 .. $#arr - 3) {
+ for my $j ($i+1 .. $#arr - 2) {
+ for my $k ($j+1 .. $#arr - 1) {
+ for my $l ($k+1 .. $#arr) {
+ my ($I, $J, $K, $L) = ($arr[$i],$arr[$j],$arr[$k],$arr[$l]);
+ my $sum1 = sum($I,$J,$K,$L);
+ my $sum2 = sum($I,$K,$J,$L);
+ my $sum3 = sum($I,$L,$K,$J);
+ for ($sum1, $sum2, $sum3) {
+ $max = $_ if ($max < $_);
+ }
+ $out .= " ($arr[$i],$arr[$j]) & ($arr[$k],$arr[$l]) --> " . $sum1 ."\n";
+ $out .= " ($arr[$i],$arr[$k]) & ($arr[$j],$arr[$l]) --> " . $sum2."\n";
+ $out .= " ($arr[$i],$arr[$l]) & ($arr[$j],$arr[$k]) --> " . $sum3 ."\n";
+ }
+ }
+ }
+}
+say "Input: \@array = (".join(",",@arr).")";
+say "Output: $max";
+print $out;