diff options
| author | CY Fung <fungcheokyin@gmail.com> | 2023-09-24 16:36:16 +0800 |
|---|---|---|
| committer | CY Fung <fungcheokyin@gmail.com> | 2023-09-24 16:36:16 +0800 |
| commit | c5f438f49167b3b39cd159d7b1d2817edd31af1b (patch) | |
| tree | fbddf3678087d393d073ca001c65b99e3306e8f4 | |
| parent | b206ebfcbb7870b0247bd33f8b3e20f25e4e921e (diff) | |
| download | perlweeklychallenge-club-c5f438f49167b3b39cd159d7b1d2817edd31af1b.tar.gz perlweeklychallenge-club-c5f438f49167b3b39cd159d7b1d2817edd31af1b.tar.bz2 perlweeklychallenge-club-c5f438f49167b3b39cd159d7b1d2817edd31af1b.zip | |
Week 235
| -rw-r--r-- | challenge-235/cheok-yin-fung/perl/ch-1.pl | 20 | ||||
| -rw-r--r-- | challenge-235/cheok-yin-fung/perl/ch-2.pl | 29 |
2 files changed, 49 insertions, 0 deletions
diff --git a/challenge-235/cheok-yin-fung/perl/ch-1.pl b/challenge-235/cheok-yin-fung/perl/ch-1.pl new file mode 100644 index 0000000000..b82846e0e7 --- /dev/null +++ b/challenge-235/cheok-yin-fung/perl/ch-1.pl @@ -0,0 +1,20 @@ +# The Weekly Challenge 235 +# Task 1 Remove One +use v5.30.0; +use warnings; +use List::MoreUtils qw/slide/; + +sub ro { + my @ints = @_; + my @diff = slide {$b-$a} @ints; + my $k = grep {$_ <= 0} @diff; + return $k<=1 ? 1 : 0; +} + +use Test::More tests=>6; +ok ro(0,2,9,4,6); +ok !ro(5,1,3,2); +ok ro(2,2,3); +ok ro(1,2,5,4,5); +ok ro(1,2,1,4,5); +ok !ro(1,2,1,1,5); diff --git a/challenge-235/cheok-yin-fung/perl/ch-2.pl b/challenge-235/cheok-yin-fung/perl/ch-2.pl new file mode 100644 index 0000000000..70320e99a9 --- /dev/null +++ b/challenge-235/cheok-yin-fung/perl/ch-2.pl @@ -0,0 +1,29 @@ +# The Weekly Challenge 235 +# Task 2 Duplicate Zeros +use v5.30.0; +use warnings; + +sub dz { + my @ints = @_; + my @new_ints; + my $k = 0; + while (scalar @new_ints < scalar @ints) { + if ($ints[$k] == 0) { + push @new_ints, 0, 0; + } + else { + push @new_ints, $ints[$k]; + } + $k++; + } + pop @new_ints if $#new_ints > $#ints; + return [@new_ints]; +} + +use Test::More tests => 3; +use Test::Deep; + +cmp_deeply dz(1, 0, 2, 3, 0, 4, 5, 0), [1, 0, 0, 2, 3, 0, 0, 4]; +cmp_deeply dz(1, 2, 3), [1, 2, 3]; +cmp_deeply dz(0, 3, 0, 4, 5), [0, 0, 3, 0, 0]; + |
