diff options
| author | Mohammad Sajid Anwar <Mohammad.Anwar@yahoo.com> | 2023-12-03 19:47:09 +0000 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2023-12-03 19:47:09 +0000 |
| commit | 3c3048e0c5fe1c1ce6f7ca3fb4e8bf3ad52a33c4 (patch) | |
| tree | 2f79e25840b4df9c65d72c48c35abaef8bbea08e /challenge-245 | |
| parent | 27e1c55cd4147e49ca020fa520e03805d8493b3a (diff) | |
| parent | 6c0b2d38e32e31d78daed444555fbc80231a6171 (diff) | |
| download | perlweeklychallenge-club-3c3048e0c5fe1c1ce6f7ca3fb4e8bf3ad52a33c4.tar.gz perlweeklychallenge-club-3c3048e0c5fe1c1ce6f7ca3fb4e8bf3ad52a33c4.tar.bz2 perlweeklychallenge-club-3c3048e0c5fe1c1ce6f7ca3fb4e8bf3ad52a33c4.zip | |
Merge pull request #9179 from E7-87-83/newt
Week 245
Diffstat (limited to 'challenge-245')
| -rw-r--r-- | challenge-245/cheok-yin-fung/perl/ch-1.pl | 16 | ||||
| -rw-r--r-- | challenge-245/cheok-yin-fung/perl/ch-2.pl | 48 |
2 files changed, 64 insertions, 0 deletions
diff --git a/challenge-245/cheok-yin-fung/perl/ch-1.pl b/challenge-245/cheok-yin-fung/perl/ch-1.pl new file mode 100644 index 0000000000..a1dd2c01ce --- /dev/null +++ b/challenge-245/cheok-yin-fung/perl/ch-1.pl @@ -0,0 +1,16 @@ +# The Weekly Challenge 245 +# Task 1 Sort Language +use v5.30.0; +use warnings; + +sub sl { + my @lang = $_[0]->@*; + my @pop = $_[1]->@*; + my @nlang = map { $lang[$_] } sort { $pop[$a] <=> $pop[$b] } 0..$#lang; + return [@nlang]; +} + +use Test::More tests=>2; +use Test::Deep; +cmp_deeply sl(['perl','c','python'],[2,1,3]), ['c','perl','python']; +cmp_deeply sl(['c++','haskell','java'],[1,3,2]), ['c++','java','haskell']; diff --git a/challenge-245/cheok-yin-fung/perl/ch-2.pl b/challenge-245/cheok-yin-fung/perl/ch-2.pl new file mode 100644 index 0000000000..a5d1b511cf --- /dev/null +++ b/challenge-245/cheok-yin-fung/perl/ch-2.pl @@ -0,0 +1,48 @@ +# The Weekly Challenge 245 +# Task 2 Largest of Three +use v5.30.0; +use warnings; +use List::Util qw/sum min/; + +sub lot { + my @ints = @_; + my $idr = sum(map {$_ % 3} @ints) % 3; + if ($idr != 0) { + my $unwanted2 = -12; + my $unwanted = min grep {$idr == $_ % 3} @ints; + my $unwill = 1; + if (!$unwanted) { + my @unwants = sort {$a<=>$b} grep {($idr+1) % 3 == $_ % 3} @ints; + $unwanted = $unwants[0]; + $unwanted2 = $unwants[1]; + return -1 if !$unwanted2; + } + my @nints; + for my $z (@ints) { + if ($z == $unwanted || $z == $unwanted2) { + $unwill--; + $unwanted = -11 if $z == $unwanted; + $unwanted = -12 if $z == $unwanted2; + } + else { + push @nints, $z; + } + } + return -1 if scalar @nints == 0; + return join "", sort {$b<=>$a} @nints; + } + else { + return -1 if scalar @ints == 0; + return join "", sort {$b<=>$a} @ints; + } +} + + +use Test::More tests=>7; +ok lot(8,1,9) == 981; +ok lot(8,6,7,1,0) == 8760; +ok lot(1) == -1; +ok lot(1,2) == 21; +ok lot(1,2,2) == 21; +ok lot(2,2) == -1; +ok lot(2,2,3,6,9) == 963; |
