aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCY Fung <fungcheokyin@gmail.com>2023-09-24 16:36:16 +0800
committerCY Fung <fungcheokyin@gmail.com>2023-09-24 16:36:16 +0800
commitc5f438f49167b3b39cd159d7b1d2817edd31af1b (patch)
treefbddf3678087d393d073ca001c65b99e3306e8f4
parentb206ebfcbb7870b0247bd33f8b3e20f25e4e921e (diff)
downloadperlweeklychallenge-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.pl20
-rw-r--r--challenge-235/cheok-yin-fung/perl/ch-2.pl29
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];
+