aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMohammad S Anwar <mohammad.anwar@yahoo.com>2021-04-06 17:12:02 +0100
committerMohammad S Anwar <mohammad.anwar@yahoo.com>2021-04-06 17:12:02 +0100
commitd032b2cf4de838229d31831e4ef10ec754ce271e (patch)
treebebdb24e80b8b933cb7368fe4bab37b57910935b
parenta6521582c468229c3fbd18d24a4fc2dae05607e7 (diff)
parent0f8455f2b3fcdc78c0819838d13b1fcba054c761 (diff)
downloadperlweeklychallenge-club-d032b2cf4de838229d31831e4ef10ec754ce271e.tar.gz
perlweeklychallenge-club-d032b2cf4de838229d31831e4ef10ec754ce271e.tar.bz2
perlweeklychallenge-club-d032b2cf4de838229d31831e4ef10ec754ce271e.zip
Merge branch 'master' of https://github.com/manwar/perlweeklychallenge-club
-rw-r--r--challenge-107/lance-wicks/blog.txt1
-rw-r--r--challenge-107/lance-wicks/perl/lib/Descriptive.pm31
-rw-r--r--challenge-107/lance-wicks/perl/t/01-numbers.t13
3 files changed, 45 insertions, 0 deletions
diff --git a/challenge-107/lance-wicks/blog.txt b/challenge-107/lance-wicks/blog.txt
new file mode 100644
index 0000000000..afc6d20266
--- /dev/null
+++ b/challenge-107/lance-wicks/blog.txt
@@ -0,0 +1 @@
+https://perl.kiwi/tales/2021/04/06/perl-weekly-challenge-107-self-describing-numbers-live-coded/
diff --git a/challenge-107/lance-wicks/perl/lib/Descriptive.pm b/challenge-107/lance-wicks/perl/lib/Descriptive.pm
new file mode 100644
index 0000000000..5f4f1b5b6d
--- /dev/null
+++ b/challenge-107/lance-wicks/perl/lib/Descriptive.pm
@@ -0,0 +1,31 @@
+package Descriptive;
+
+use Moo;
+
+sub list {
+ my $self = shift;
+ my @list;
+
+ for my $num (1..30_000) {
+ push @list, $num if $self->is_self_desc($num);
+ }
+
+ return \@list;
+}
+
+sub is_self_desc {
+ my ($self,$num) = @_;
+
+ my $description;
+ for my $int (0..9) {
+ $description .= () = $num =~ /$int/g;
+ }
+ my $length_of_num = length $num;
+
+ $description = substr $description, 0, $length_of_num;
+
+ return 1 if $description == $num;
+ return 0;
+}
+
+1;
diff --git a/challenge-107/lance-wicks/perl/t/01-numbers.t b/challenge-107/lance-wicks/perl/t/01-numbers.t
new file mode 100644
index 0000000000..874f18ca8e
--- /dev/null
+++ b/challenge-107/lance-wicks/perl/t/01-numbers.t
@@ -0,0 +1,13 @@
+use Test2::V0 -target => 'Descriptive';
+
+subtest 'is_self_desc' => sub {
+ is $CLASS->is_self_desc(1210), 1, '1210 is a self describing number';
+ is $CLASS->is_self_desc(1), 0, '1 is NOT a self describing number';
+};
+
+subtest 'list' => sub {
+ is $CLASS->list, [1210,2020,21200], 'List returns the first three numbers';
+};
+
+
+done_testing;