diff options
| author | Lance Wicks <lw@judocoach.com> | 2021-04-21 20:21:20 +0100 |
|---|---|---|
| committer | Lance Wicks <lw@judocoach.com> | 2021-04-21 20:21:20 +0100 |
| commit | fff9e4703ed20a60640c4ef24219499eb532ecb3 (patch) | |
| tree | 4c7cbcfe191b1e461ca5f6c792b214a12b06c8cc | |
| parent | a5f44e0089ad7ffdfa74a46d5591738453f4229e (diff) | |
| download | perlweeklychallenge-club-fff9e4703ed20a60640c4ef24219499eb532ecb3.tar.gz perlweeklychallenge-club-fff9e4703ed20a60640c4ef24219499eb532ecb3.tar.bz2 perlweeklychallenge-club-fff9e4703ed20a60640c4ef24219499eb532ecb3.zip | |
Perl implementation for 108, thanks Mohammad!
| -rw-r--r-- | challenge-109/lance-wicks/perl/ch-1.pl | 12 | ||||
| -rw-r--r-- | challenge-109/lance-wicks/perl/lib/Chowla.pm | 26 | ||||
| -rw-r--r-- | challenge-109/lance-wicks/perl/t/01-chowla.t | 12 |
3 files changed, 50 insertions, 0 deletions
diff --git a/challenge-109/lance-wicks/perl/ch-1.pl b/challenge-109/lance-wicks/perl/ch-1.pl new file mode 100644 index 0000000000..ddbb11ad8a --- /dev/null +++ b/challenge-109/lance-wicks/perl/ch-1.pl @@ -0,0 +1,12 @@ +use strict; +use warnings; + +use lib './lib'; +use Chowla; + +my $c = Chowla->new; +my $numbers = $c->list(20); + +for my $n (@$numbers) { + print "$n, "; +} diff --git a/challenge-109/lance-wicks/perl/lib/Chowla.pm b/challenge-109/lance-wicks/perl/lib/Chowla.pm new file mode 100644 index 0000000000..06619c38d2 --- /dev/null +++ b/challenge-109/lance-wicks/perl/lib/Chowla.pm @@ -0,0 +1,26 @@ +package Chowla; + +use Moo; + +sub list { + my ($self,$max) = @_; + my @chowla_numbers; + for my $n (1..$max) { + push @chowla_numbers, $self->n($n); + } + return \@chowla_numbers; +} + +sub n { + my ($self,$num) = @_; + + my $total = 0; + for my $n (2..$num-1) { + if ($num % $n == 0) { + $total += $n; + } + } + return $total; +} + +1; diff --git a/challenge-109/lance-wicks/perl/t/01-chowla.t b/challenge-109/lance-wicks/perl/t/01-chowla.t new file mode 100644 index 0000000000..15d50ac14e --- /dev/null +++ b/challenge-109/lance-wicks/perl/t/01-chowla.t @@ -0,0 +1,12 @@ +use Test2::V0 -target => 'Chowla'; + +is $CLASS->list(20),[0, 0, 0, 2, 0, 5, 0, 6, 3, 7, 0, 15, 0, 9, 8, 14, 0, 20, 0, 21], 'List the first 20 Chowla numbers'; + +is $CLASS->n(1),0, 'First Chowla number should be zero'; +is $CLASS->n(2),0, 'Second Chowla number should be zero'; +is $CLASS->n(3),0, 'Third Chowla number should be zero'; +is $CLASS->n(4),2, 'Fourth Chowla number should be two'; +is $CLASS->n(5),0, 'Fifth Chowla number should be 0'; +is $CLASS->n(6),5, 'Sixth Chowla number should be 5'; + +done_testing; |
