diff options
| author | Mohammad S Anwar <mohammad.anwar@yahoo.com> | 2021-04-06 17:12:02 +0100 |
|---|---|---|
| committer | Mohammad S Anwar <mohammad.anwar@yahoo.com> | 2021-04-06 17:12:02 +0100 |
| commit | d032b2cf4de838229d31831e4ef10ec754ce271e (patch) | |
| tree | bebdb24e80b8b933cb7368fe4bab37b57910935b | |
| parent | a6521582c468229c3fbd18d24a4fc2dae05607e7 (diff) | |
| parent | 0f8455f2b3fcdc78c0819838d13b1fcba054c761 (diff) | |
| download | perlweeklychallenge-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.txt | 1 | ||||
| -rw-r--r-- | challenge-107/lance-wicks/perl/lib/Descriptive.pm | 31 | ||||
| -rw-r--r-- | challenge-107/lance-wicks/perl/t/01-numbers.t | 13 |
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; |
