aboutsummaryrefslogtreecommitdiff
path: root/challenge-109
diff options
context:
space:
mode:
authorLance Wicks <lw@judocoach.com>2021-04-21 20:21:20 +0100
committerLance Wicks <lw@judocoach.com>2021-04-21 20:21:20 +0100
commitfff9e4703ed20a60640c4ef24219499eb532ecb3 (patch)
tree4c7cbcfe191b1e461ca5f6c792b214a12b06c8cc /challenge-109
parenta5f44e0089ad7ffdfa74a46d5591738453f4229e (diff)
downloadperlweeklychallenge-club-fff9e4703ed20a60640c4ef24219499eb532ecb3.tar.gz
perlweeklychallenge-club-fff9e4703ed20a60640c4ef24219499eb532ecb3.tar.bz2
perlweeklychallenge-club-fff9e4703ed20a60640c4ef24219499eb532ecb3.zip
Perl implementation for 108, thanks Mohammad!
Diffstat (limited to 'challenge-109')
-rw-r--r--challenge-109/lance-wicks/perl/ch-1.pl12
-rw-r--r--challenge-109/lance-wicks/perl/lib/Chowla.pm26
-rw-r--r--challenge-109/lance-wicks/perl/t/01-chowla.t12
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;