aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCY Fung <fungcheokyin@gmail.com>2023-11-26 22:49:13 +0800
committerCY Fung <fungcheokyin@gmail.com>2023-11-26 22:49:13 +0800
commitc301e328c95a9956c014c043776e8e81d0c20b47 (patch)
tree5f8582bb25f8ac69e58d6100afea8109c21d3f56
parent60e02f7efd760ffdd7546176db0b3de9bead5f96 (diff)
downloadperlweeklychallenge-club-c301e328c95a9956c014c043776e8e81d0c20b47.tar.gz
perlweeklychallenge-club-c301e328c95a9956c014c043776e8e81d0c20b47.tar.bz2
perlweeklychallenge-club-c301e328c95a9956c014c043776e8e81d0c20b47.zip
Week 244
-rw-r--r--challenge-244/cheok-yin-fung/perl/ch-1.pl22
-rw-r--r--challenge-244/cheok-yin-fung/perl/ch-2.pl20
2 files changed, 42 insertions, 0 deletions
diff --git a/challenge-244/cheok-yin-fung/perl/ch-1.pl b/challenge-244/cheok-yin-fung/perl/ch-1.pl
new file mode 100644
index 0000000000..c364fc44a1
--- /dev/null
+++ b/challenge-244/cheok-yin-fung/perl/ch-1.pl
@@ -0,0 +1,22 @@
+# The Weekly Challenge 244
+# Task 1 Count Smaller
+use v5.30.0;
+use warnings;
+
+sub cs {
+ my @int = @_;
+ my @ans;
+ for my $k (0..$#int) {
+ push @ans, 0;
+ for my $i (0..$#int) {
+ $ans[-1]++ if $int[$i]<$int[$k];
+ }
+ }
+ return [@ans];
+}
+
+use Test::More tests=>3;
+use Test::Deep;
+cmp_deeply cs(8,1,2,2,3),[4,0,1,1,3];
+cmp_deeply cs(6,5,4,8),[2,1,0,3];
+cmp_deeply cs(2,2,2),[0,0,0];
diff --git a/challenge-244/cheok-yin-fung/perl/ch-2.pl b/challenge-244/cheok-yin-fung/perl/ch-2.pl
new file mode 100644
index 0000000000..315046e0c0
--- /dev/null
+++ b/challenge-244/cheok-yin-fung/perl/ch-2.pl
@@ -0,0 +1,20 @@
+# The Weekly Challenge 244
+# Task 2 Group Hero
+use v5.30.0;
+use warnings;
+use List::Util qw/max min/;
+sub gh {
+ my $ans = 0;
+ my @nums = @_;
+ my $num = $#nums+1;
+ for my $grp (2 .. 2 << $#nums) {
+ my $str = unpack("b$num", pack("s", $grp-1));
+ my @arr = split "", $str;
+ my @ints = map {$nums[$_]} grep {$arr[$_]} 0..$#nums;
+ $ans += max(@ints)**2 * min(@ints);
+ }
+ return $ans;
+}
+
+use Test::More tests=>1;
+ok gh(2,1,4)==141;