aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCY Fung <fungcheokyin@gmail.com>2022-12-12 16:56:00 +0800
committerCY Fung <fungcheokyin@gmail.com>2022-12-12 16:56:00 +0800
commit2ec316feee36e9a142149cc1d92bc98cbf6afc64 (patch)
tree22188e8cfcfad99fb34f07c4f68f6ef9eea9a2d7
parentbcaa98c386bca18260843a58f9d21a82a624fc52 (diff)
downloadperlweeklychallenge-club-2ec316feee36e9a142149cc1d92bc98cbf6afc64.tar.gz
perlweeklychallenge-club-2ec316feee36e9a142149cc1d92bc98cbf6afc64.tar.bz2
perlweeklychallenge-club-2ec316feee36e9a142149cc1d92bc98cbf6afc64.zip
Week 195
-rw-r--r--challenge-195/cheok-yin-fung/perl/ch-1.pl19
-rw-r--r--challenge-195/cheok-yin-fung/perl/ch-2.pl18
2 files changed, 37 insertions, 0 deletions
diff --git a/challenge-195/cheok-yin-fung/perl/ch-1.pl b/challenge-195/cheok-yin-fung/perl/ch-1.pl
new file mode 100644
index 0000000000..96efc1eb43
--- /dev/null
+++ b/challenge-195/cheok-yin-fung/perl/ch-1.pl
@@ -0,0 +1,19 @@
+# The Weekly Challenge 195
+# Task 1 Special Integers
+use v5.30.0;
+use warnings;
+use List::Util qw/uniqint/;
+
+sub si {
+ my $n = $_[0];
+ my $ans = 0;
+ for my $i (1..$n) {
+ $ans++ if length $i == scalar uniqint split "", $i;
+ }
+ return $ans;
+}
+
+use Test::More tests=>2;
+ok si(15) == 14;
+ok si(35) == 32;
+
diff --git a/challenge-195/cheok-yin-fung/perl/ch-2.pl b/challenge-195/cheok-yin-fung/perl/ch-2.pl
new file mode 100644
index 0000000000..e8eab81d20
--- /dev/null
+++ b/challenge-195/cheok-yin-fung/perl/ch-2.pl
@@ -0,0 +1,18 @@
+# The Weekly Challenge 195
+# Task 2 Most Frequent Even
+use v5.30.0;
+use warnings;
+use List::Util qw/max min/;
+sub mfe {
+ my @even_list = grep {$_ % 2 == 0} @_;
+ return -1 if scalar @even_list == 0;
+ my %freq;
+ $freq{$_}++ for @even_list;
+ my $max = max values %freq;
+ return min grep { $freq{$_} == $max } keys %freq;
+}
+
+use Test::More tests=>3;
+ok mfe(1,1,2,6,2) == 2;
+ok mfe(1,3,5,7) == -1;
+ok mfe(6,4,4,6,1) == 4;