aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCY Fung <fungcheokyin@gmail.com>2024-01-15 06:26:51 +0800
committerCY Fung <fungcheokyin@gmail.com>2024-01-15 06:26:51 +0800
commit9ffb043031b2e46225810346f673534960b3f7cc (patch)
tree8f0ffc4dafc04103acb99120b4505aeced2c31b1
parent71284c9a9f21186c637a988437c08d32bd1792eb (diff)
downloadperlweeklychallenge-club-9ffb043031b2e46225810346f673534960b3f7cc.tar.gz
perlweeklychallenge-club-9ffb043031b2e46225810346f673534960b3f7cc.tar.bz2
perlweeklychallenge-club-9ffb043031b2e46225810346f673534960b3f7cc.zip
Week 251
-rw-r--r--challenge-251/cheok-yin-fung/perl/ch-1.pl23
-rw-r--r--challenge-251/cheok-yin-fung/perl/ch-2.pl31
2 files changed, 54 insertions, 0 deletions
diff --git a/challenge-251/cheok-yin-fung/perl/ch-1.pl b/challenge-251/cheok-yin-fung/perl/ch-1.pl
new file mode 100644
index 0000000000..50530a60d8
--- /dev/null
+++ b/challenge-251/cheok-yin-fung/perl/ch-1.pl
@@ -0,0 +1,23 @@
+# The Weekly Challenge 251
+# Task 1 Concatenation Value
+use v5.30.0;
+use warnings;
+use List::Util qw/sum/;
+use List::MoreUtils qw/pairwise/;
+
+sub cv {
+ my @ints = @_;
+ my $mid = @ints % 2 ? (splice @ints, @ints / 2, 1) : 0;
+ my @rints = reverse @ints;
+ @ints = @ints[0..@ints/2-1];
+ @rints = @rints[0..@rints/2-1];
+ my $ans = $mid + (sum(pairwise {$a.$b} @ints, @rints));
+ return $ans;
+}
+
+use Test2::V0;
+is cv(6,12,25,1),1286;
+is cv(10,7,31,5,2,2),489;
+is cv(1,2,10),112;
+
+done_testing;
diff --git a/challenge-251/cheok-yin-fung/perl/ch-2.pl b/challenge-251/cheok-yin-fung/perl/ch-2.pl
new file mode 100644
index 0000000000..d94771ea26
--- /dev/null
+++ b/challenge-251/cheok-yin-fung/perl/ch-2.pl
@@ -0,0 +1,31 @@
+# The Weekly Challenge 251
+# Task 2 Lucky Number
+use v5.30.0;
+use warnings;
+use List::Util qw/min max first/;
+
+sub ln {
+ my $matrix = $_[0];
+ my @rows = $matrix->@*;
+ for my $r (@rows) {
+ my $min = min $r->@*;
+ my $min_loc = first {$min == $r->[$_]} 0..$r->$#*;
+ my @carr = map {$_->[$min_loc]} @rows;
+ return $min if $min == max @carr;
+ }
+ return -1;
+}
+
+
+
+use Test2::V0;
+is ln([ [ 3, 7, 8],
+ [ 9, 11, 13],
+ [15, 16, 17] ]), 15;
+
+is ln([ [ 1, 10, 4, 2],
+ [ 9, 3, 8, 7],
+ [15, 16, 17, 12] ]), 12;
+
+is ln([[7,8],[1,2]]),7;
+done_testing;