aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCY Fung <fungcheokyin@gmail.com>2022-07-11 23:25:28 +0800
committerCY Fung <fungcheokyin@gmail.com>2022-07-11 23:25:28 +0800
commitf448cdd65285d9ae08a2abdb58a87c80e7c1e0b5 (patch)
tree9a6241d532006eaa350623c0f8b08d13bce95150
parenta33241053464f2ecc6ce589cf5d3a43ab67c6b75 (diff)
downloadperlweeklychallenge-club-f448cdd65285d9ae08a2abdb58a87c80e7c1e0b5.tar.gz
perlweeklychallenge-club-f448cdd65285d9ae08a2abdb58a87c80e7c1e0b5.tar.bz2
perlweeklychallenge-club-f448cdd65285d9ae08a2abdb58a87c80e7c1e0b5.zip
Week 173 Task 1
-rw-r--r--challenge-173/cheok-yin-fung/perl/ch-1.pl47
1 files changed, 47 insertions, 0 deletions
diff --git a/challenge-173/cheok-yin-fung/perl/ch-1.pl b/challenge-173/cheok-yin-fung/perl/ch-1.pl
new file mode 100644
index 0000000000..7d06e0ce99
--- /dev/null
+++ b/challenge-173/cheok-yin-fung/perl/ch-1.pl
@@ -0,0 +1,47 @@
+# The Weekly Challenge 173
+# Task 1 Esthetic Number
+use v5.30.0;
+use List::Util qw/product all/;
+use List::MoreUtils qw/slide/;
+
+say es($ARGV[0]) if defined($ARGV[0]);
+
+
+
+sub es {
+ return
+ 1 == length $_[0] ||
+ abs(product slide {$a - $b} (split "", $_[0])) == 1 ? 1 : 0;
+}
+
+sub es1 {
+ return
+ 1 == length $_[0] ||
+ (all {abs $_ == 1} slide {$a - $b} (split "", $_[0])) ? 1 : 0;
+}
+
+use Test::More tests=>18;
+ok es(5456);
+ok !es(120);
+ok es(12345);
+
+ok es(54321);
+ok !es(53421);
+ok es(121);
+
+ok !es(890);
+ok es(89);
+ok es(9);
+
+ok es1(5456);
+ok !es1(120);
+ok es1(12345);
+
+ok es1(54321);
+ok !es1(53421);
+ok es1(121);
+
+ok !es1(890);
+ok es1(89);
+ok es1(9);
+