diff options
| author | Mohammad S Anwar <Mohammad.Anwar@yahoo.com> | 2021-04-06 17:11:20 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2021-04-06 17:11:20 +0100 |
| commit | 0f8455f2b3fcdc78c0819838d13b1fcba054c761 (patch) | |
| tree | bddc1e92b7780be3e47df075d2a6d2b80de97d68 | |
| parent | b37f0ec54ec1d6f4953a2fdba7822d588ca4127c (diff) | |
| parent | c3ec976cd9925cd4e698ae9ee682bb97e917769b (diff) | |
| download | perlweeklychallenge-club-0f8455f2b3fcdc78c0819838d13b1fcba054c761.tar.gz perlweeklychallenge-club-0f8455f2b3fcdc78c0819838d13b1fcba054c761.tar.bz2 perlweeklychallenge-club-0f8455f2b3fcdc78c0819838d13b1fcba054c761.zip | |
Merge pull request #3844 from lancew/branch-for-challenge-107
Add Perl solution and blog post (incl. video)
| -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; |
