diff options
| author | CY Fung <fungcheokyin@gmail.com> | 2022-07-11 23:25:28 +0800 |
|---|---|---|
| committer | CY Fung <fungcheokyin@gmail.com> | 2022-07-11 23:25:28 +0800 |
| commit | f448cdd65285d9ae08a2abdb58a87c80e7c1e0b5 (patch) | |
| tree | 9a6241d532006eaa350623c0f8b08d13bce95150 | |
| parent | a33241053464f2ecc6ce589cf5d3a43ab67c6b75 (diff) | |
| download | perlweeklychallenge-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.pl | 47 |
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); + |
