aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCY Fung <fungcheokyin@gmail.com>2023-06-26 05:12:56 +0800
committerCY Fung <fungcheokyin@gmail.com>2023-06-26 05:12:56 +0800
commit73d8b4a974d56b01963294e8c3c775dec7e46bbd (patch)
treeca04c67c1796b8c4fb9e66c6f1adaf8bb58863da
parent15fcbedb28557e5afbb44a6c8404f65b84c9f61c (diff)
downloadperlweeklychallenge-club-73d8b4a974d56b01963294e8c3c775dec7e46bbd.tar.gz
perlweeklychallenge-club-73d8b4a974d56b01963294e8c3c775dec7e46bbd.tar.bz2
perlweeklychallenge-club-73d8b4a974d56b01963294e8c3c775dec7e46bbd.zip
Week 222
-rw-r--r--challenge-222/cheok-yin-fung/perl/ch-1.pl20
-rw-r--r--challenge-222/cheok-yin-fung/perl/ch-2.pl26
2 files changed, 46 insertions, 0 deletions
diff --git a/challenge-222/cheok-yin-fung/perl/ch-1.pl b/challenge-222/cheok-yin-fung/perl/ch-1.pl
new file mode 100644
index 0000000000..2677bc3b45
--- /dev/null
+++ b/challenge-222/cheok-yin-fung/perl/ch-1.pl
@@ -0,0 +1,20 @@
+# The Weekly Challenge 222
+# Task 1 Matching Members
+use v5.30.0;
+use warnings;
+use List::Util qw/zip/;
+
+sub mm {
+ my @arr = @_;
+ my @brr = sort {$a <=> $b} @arr;
+ my $ans = grep {$_ == 1} map {$_->[0] == $_->[1]} zip [@arr], [@brr];
+ return $ans;
+}
+
+
+use Test::More tests=>3;
+ok mm(1, 1, 4, 2, 1, 3) == 3;
+ok mm(5, 1, 2, 3, 4) == 0;
+ok mm(1, 2, 3, 4, 5) == 5;
+
+
diff --git a/challenge-222/cheok-yin-fung/perl/ch-2.pl b/challenge-222/cheok-yin-fung/perl/ch-2.pl
new file mode 100644
index 0000000000..1349a45860
--- /dev/null
+++ b/challenge-222/cheok-yin-fung/perl/ch-2.pl
@@ -0,0 +1,26 @@
+# The Weekly Challenge
+# Task 2 Last Member
+use v5.30.0;
+use warnings;
+use List::Util qw/max first/;
+
+sub lm {
+ my @arr = @_;
+ while (scalar @arr > 1) {
+ my $m = max @arr;
+ my $ind = first {$arr[$_] == $m} 0..$#arr;
+ my @brr = map {$arr[$_]} grep {$_ != $ind} 0..$#arr;
+ my $n = max @brr;
+ my $jnd = first {$brr[$_] == $n} 0..$#brr;
+ my @crr = map {$brr[$_]} grep {$_ != $jnd} 0..$#brr;
+ push @crr, $m-$n if $m != $n;
+ @arr = @crr;
+ }
+ return 0 if scalar @arr == 0;
+ return $arr[0];
+}
+
+use Test::More tests=>3;
+ok lm(2, 7, 4, 1, 8, 1) == 1;
+ok lm(1) == 1;
+ok lm(1, 1) == 0;