aboutsummaryrefslogtreecommitdiff
path: root/challenge-173
diff options
context:
space:
mode:
authorMohammad S Anwar <mohammad.anwar@yahoo.com>2022-07-13 23:55:31 +0100
committerMohammad S Anwar <mohammad.anwar@yahoo.com>2022-07-13 23:55:31 +0100
commit47b189c896e6478d5e74dc74d6e91fa6cbaffab9 (patch)
tree48320154bc4b9cda0fcd4e5177c817620fe18c89 /challenge-173
parentfbf64879852eec49f370950872ce34903e357dfe (diff)
downloadperlweeklychallenge-club-47b189c896e6478d5e74dc74d6e91fa6cbaffab9.tar.gz
perlweeklychallenge-club-47b189c896e6478d5e74dc74d6e91fa6cbaffab9.tar.bz2
perlweeklychallenge-club-47b189c896e6478d5e74dc74d6e91fa6cbaffab9.zip
- Added solutions to the task "Esthetic Number" of week 173.
Diffstat (limited to 'challenge-173')
-rw-r--r--challenge-173/mohammad-anwar/perl/ch-1.pl40
-rw-r--r--challenge-173/mohammad-anwar/python/ch-1.py38
-rw-r--r--challenge-173/mohammad-anwar/raku/ch-1.raku34
3 files changed, 112 insertions, 0 deletions
diff --git a/challenge-173/mohammad-anwar/perl/ch-1.pl b/challenge-173/mohammad-anwar/perl/ch-1.pl
new file mode 100644
index 0000000000..615f10d980
--- /dev/null
+++ b/challenge-173/mohammad-anwar/perl/ch-1.pl
@@ -0,0 +1,40 @@
+#!/usr/bin/perl
+
+=head1
+
+Week 173:
+
+ https://theweeklychallenge.org/blog/perl-weekly-challenge-173
+
+Task #1: Esthetic Number
+
+ You are given a positive integer, $n.
+
+ Write a script to find out if the given number is Esthetic Number.
+
+=cut
+
+use v5.36;
+use Test2::V0;
+use experimental qw(builtin);
+use builtin qw(true false);
+
+ok esthetic_number(5456), 'Example 1';
+ok !esthetic_number(120), 'Example 2';
+
+done_testing;
+
+#
+#
+# METHOD
+
+sub esthetic_number($n) {
+ die "ERROR: Missing number.\n" unless defined $n;
+ die "ERROR: Invalid number $n.\n" if $n < 0;
+
+ my @n = split //, $n;
+ foreach my $i (1 .. @n-1) {
+ return false if abs($n[$i-1] - $n[$i]) != 1;
+ }
+ return true;
+}
diff --git a/challenge-173/mohammad-anwar/python/ch-1.py b/challenge-173/mohammad-anwar/python/ch-1.py
new file mode 100644
index 0000000000..5d9e80c567
--- /dev/null
+++ b/challenge-173/mohammad-anwar/python/ch-1.py
@@ -0,0 +1,38 @@
+#!/usr/bin/python3
+
+'''
+
+Week 173:
+
+ https://theweeklychallenge.org/blog/perl-weekly-challenge-173
+
+Task #1: Esthetic Number
+
+ You are given a positive integer, $n.
+
+ Write a script to find out if the given number is Esthetic Number.
+
+'''
+
+import unittest
+
+def is_esthetic_number(n):
+ s = str(n)
+ for i in range(1, len(s)):
+ if abs(int(s[i-1]) - int(s[i])) != 1:
+ return False
+ return True
+
+#
+#
+# Unit test class
+
+class TestPrimePartition(unittest.TestCase):
+
+ def test_example_1(self):
+ self.assertTrue(is_esthetic_number(5456))
+
+ def test_example_2(self):
+ self.assertFalse(is_esthetic_number(120))
+
+unittest.main()
diff --git a/challenge-173/mohammad-anwar/raku/ch-1.raku b/challenge-173/mohammad-anwar/raku/ch-1.raku
new file mode 100644
index 0000000000..82bbc1d7a0
--- /dev/null
+++ b/challenge-173/mohammad-anwar/raku/ch-1.raku
@@ -0,0 +1,34 @@
+#!/usr/bin/env raku
+
+=begin pod
+
+Week 173:
+
+ https://theweeklychallenge.org/blog/perl-weekly-challenge-173
+
+Task #1: Esthetic Number
+
+ You are given a positive integer, $n.
+
+ Write a script to find out if the given number is Esthetic Number.
+
+=end pod
+
+use Test;
+
+ok esthetic-number(5456), 'Example 1';
+ok !esthetic-number(120), 'Example 2';
+
+done-testing;
+
+#
+#
+# METHOD
+
+sub esthetic-number(Int $n where $n > 0 --> Bool) {
+ my @n = $n.comb;
+ for 1 .. @n.end -> $i {
+ return False if abs(@n[$i-1] - @n[$i]) != 1;
+ }
+ return True;
+}