diff options
| -rw-r--r-- | challenge-195/cheok-yin-fung/perl/ch-1.pl | 19 | ||||
| -rw-r--r-- | challenge-195/cheok-yin-fung/perl/ch-2.pl | 18 |
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; |
