diff options
| author | Lance Wicks <lw@judocoach.com> | 2021-04-06 16:55:51 +0100 |
|---|---|---|
| committer | Lance Wicks <lw@judocoach.com> | 2021-04-06 16:55:51 +0100 |
| commit | 0f0f34a43ef6be5b591eb53667bcd4695862e88f (patch) | |
| tree | 17c406bea049f4ac7e3375c10eb5a767f3708912 | |
| parent | b37f0ec54ec1d6f4953a2fdba7822d588ca4127c (diff) | |
| download | perlweeklychallenge-club-0f0f34a43ef6be5b591eb53667bcd4695862e88f.tar.gz perlweeklychallenge-club-0f0f34a43ef6be5b591eb53667bcd4695862e88f.tar.bz2 perlweeklychallenge-club-0f0f34a43ef6be5b591eb53667bcd4695862e88f.zip | |
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..079e6cd990 --- /dev/null +++ b/challenge-107/lance-wicks/blog.txt @@ -0,0 +1 @@ +https://perl.kiwi/tales/2021/04/06/perl-weekly-challege-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; |
