From 0f0f34a43ef6be5b591eb53667bcd4695862e88f Mon Sep 17 00:00:00 2001 From: Lance Wicks Date: Tue, 6 Apr 2021 16:55:51 +0100 Subject: Add Perl solution and blog post (incl. video) --- challenge-107/lance-wicks/blog.txt | 1 + challenge-107/lance-wicks/perl/lib/Descriptive.pm | 31 +++++++++++++++++++++++ challenge-107/lance-wicks/perl/t/01-numbers.t | 13 ++++++++++ 3 files changed, 45 insertions(+) create mode 100644 challenge-107/lance-wicks/blog.txt create mode 100644 challenge-107/lance-wicks/perl/lib/Descriptive.pm create mode 100644 challenge-107/lance-wicks/perl/t/01-numbers.t 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; -- cgit From c3ec976cd9925cd4e698ae9ee682bb97e917769b Mon Sep 17 00:00:00 2001 From: Lance Wicks Date: Tue, 6 Apr 2021 17:00:29 +0100 Subject: Update blog.txt --- challenge-107/lance-wicks/blog.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/challenge-107/lance-wicks/blog.txt b/challenge-107/lance-wicks/blog.txt index 079e6cd990..afc6d20266 100644 --- a/challenge-107/lance-wicks/blog.txt +++ b/challenge-107/lance-wicks/blog.txt @@ -1 +1 @@ -https://perl.kiwi/tales/2021/04/06/perl-weekly-challege-107-self-describing-numbers-live-coded/ +https://perl.kiwi/tales/2021/04/06/perl-weekly-challenge-107-self-describing-numbers-live-coded/ -- cgit