diff options
| author | CY Fung <fungcheokyin@gmail.com> | 2023-11-26 22:49:13 +0800 |
|---|---|---|
| committer | CY Fung <fungcheokyin@gmail.com> | 2023-11-26 22:49:13 +0800 |
| commit | c301e328c95a9956c014c043776e8e81d0c20b47 (patch) | |
| tree | 5f8582bb25f8ac69e58d6100afea8109c21d3f56 | |
| parent | 60e02f7efd760ffdd7546176db0b3de9bead5f96 (diff) | |
| download | perlweeklychallenge-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.pl | 22 | ||||
| -rw-r--r-- | challenge-244/cheok-yin-fung/perl/ch-2.pl | 20 |
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; |
