diff options
| author | CY Fung <fungcheokyin@gmail.com> | 2024-01-15 06:26:51 +0800 |
|---|---|---|
| committer | CY Fung <fungcheokyin@gmail.com> | 2024-01-15 06:26:51 +0800 |
| commit | 9ffb043031b2e46225810346f673534960b3f7cc (patch) | |
| tree | 8f0ffc4dafc04103acb99120b4505aeced2c31b1 | |
| parent | 71284c9a9f21186c637a988437c08d32bd1792eb (diff) | |
| download | perlweeklychallenge-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.pl | 23 | ||||
| -rw-r--r-- | challenge-251/cheok-yin-fung/perl/ch-2.pl | 31 |
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; |
