diff options
| author | Mohammad Sajid Anwar <Mohammad.Anwar@yahoo.com> | 2024-06-02 21:57:45 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-06-02 21:57:45 +0100 |
| commit | e028a02927af7b68e58777e1244e48fc0afae10f (patch) | |
| tree | fa048308021b8496dc6b5bedfac4ba67d1daf3e8 | |
| parent | 54406a44df1588a8f67da8f69bed2e02e882669a (diff) | |
| parent | 781d55b4aec8d8a24189a52805739d81072cd740 (diff) | |
| download | perlweeklychallenge-club-e028a02927af7b68e58777e1244e48fc0afae10f.tar.gz perlweeklychallenge-club-e028a02927af7b68e58777e1244e48fc0afae10f.tar.bz2 perlweeklychallenge-club-e028a02927af7b68e58777e1244e48fc0afae10f.zip | |
Merge pull request #10190 from E7-87-83/newt
Week 271
| -rw-r--r-- | challenge-271/cheok-yin-fung/perl/ch-1.pl | 24 | ||||
| -rw-r--r-- | challenge-271/cheok-yin-fung/perl/ch-2.pl | 21 |
2 files changed, 45 insertions, 0 deletions
diff --git a/challenge-271/cheok-yin-fung/perl/ch-1.pl b/challenge-271/cheok-yin-fung/perl/ch-1.pl new file mode 100644 index 0000000000..70241dfa00 --- /dev/null +++ b/challenge-271/cheok-yin-fung/perl/ch-1.pl @@ -0,0 +1,24 @@ +# The Weekly Challenge 271 +# Task 1 Maximum Ones + +use v5.30.0; +use warnings; + +sub mo { + my $mat = $_[0]; + my $max_i; + my $max_one = 0; + for my $i (0..$mat->$#*) { + my $ones = grep {$_ == 1} $mat->[$i]->@*; + if ($ones > $max_one) { + $max_one = $ones; + $max_i = $i; + } + } + return $max_i+1; +} + +use Test::More tests=>3; +ok mo([[0,1],[1,0]])==1; +ok mo([[0,0,0],[1,0,1]])==2; +ok mo([[0,0],[1,1],[0,0]])==2; diff --git a/challenge-271/cheok-yin-fung/perl/ch-2.pl b/challenge-271/cheok-yin-fung/perl/ch-2.pl new file mode 100644 index 0000000000..94e581ff27 --- /dev/null +++ b/challenge-271/cheok-yin-fung/perl/ch-2.pl @@ -0,0 +1,21 @@ +# The Weekly Challenge 271 +# Task 2 Sort by 1 Bits + +use v5.30.0; +use warnings; + +sub sbob { + my @arr = $_[0]->@*; + @arr = sort {num_of_one_bits($a)<=>num_of_one_bits($b) || $a<=>$b} @arr; + return [@arr]; +} + +sub num_of_one_bits { + my $num = $_[0]; + my $str = unpack("B32", pack("N", $num)); + my $ones = grep {$_==1} split "", $str; + return $ones; +} + +say join ", ", sbob([0, 1, 2, 3, 4, 5, 6, 7, 8])->@*; +say join ", ", sbob([1024, 512, 256, 128, 64])->@*; |
