aboutsummaryrefslogtreecommitdiff
path: root/challenge-008
diff options
context:
space:
mode:
authorKian-Meng, Ang <kianmeng@cpan.org>2019-05-19 23:18:14 +0800
committerKian-Meng, Ang <kianmeng@cpan.org>2019-05-19 23:18:14 +0800
commit8a46d2a617b107590647bf6810910cd89cf8c8aa (patch)
tree288f029ac8b1b56ad306230f6e7dbeba7b6da105 /challenge-008
parent7ff4ca98a648d771ede6cb20c3fc030b13fea691 (diff)
downloadperlweeklychallenge-club-8a46d2a617b107590647bf6810910cd89cf8c8aa.tar.gz
perlweeklychallenge-club-8a46d2a617b107590647bf6810910cd89cf8c8aa.tar.bz2
perlweeklychallenge-club-8a46d2a617b107590647bf6810910cd89cf8c8aa.zip
Challenge #008 answers and challenge #007 blog link
Diffstat (limited to 'challenge-008')
-rw-r--r--challenge-008/kian-meng-ang/perl5/ch1.pl36
-rw-r--r--challenge-008/kian-meng-ang/perl5/ch2.pl29
2 files changed, 65 insertions, 0 deletions
diff --git a/challenge-008/kian-meng-ang/perl5/ch1.pl b/challenge-008/kian-meng-ang/perl5/ch1.pl
new file mode 100644
index 0000000000..d8f4fd2af9
--- /dev/null
+++ b/challenge-008/kian-meng-ang/perl5/ch1.pl
@@ -0,0 +1,36 @@
+#!/usr/bin/env perl
+# vi:et:sw=4 ts=4 ft=perl
+
+# See https://en.wikipedia.org/wiki/Perfect_number
+# See https://en.wikipedia.org/wiki/List_of_perfect_numbers
+# See https://en.wikipedia.org/wiki/Euclid%E2%80%93Euler_theorem
+
+use 5.010;
+use strict;
+use warnings;
+use utf8;
+
+use Const::Fast;
+use Math::Prime::Util qw(prime_iterator is_prime);
+
+const my $TOTAL_PERFECT_NUMBERS => 5;
+
+my $iter = prime_iterator;
+my @perfect_numbers = ();
+
+while (scalar @perfect_numbers < $TOTAL_PERFECT_NUMBERS) {
+ my $prime_number = $iter->();
+
+ my $mersenne_prime = 2 ** $prime_number - 1;
+ next if (!is_prime($mersenne_prime));
+
+ push @perfect_numbers, (2 ** ($prime_number - 1)) * $mersenne_prime;
+}
+
+say join q|, |, @perfect_numbers;
+
+1;
+
+__END__
+$ perl ch1.pl
+6, 28, 496, 8128, 33550336
diff --git a/challenge-008/kian-meng-ang/perl5/ch2.pl b/challenge-008/kian-meng-ang/perl5/ch2.pl
new file mode 100644
index 0000000000..d87427935e
--- /dev/null
+++ b/challenge-008/kian-meng-ang/perl5/ch2.pl
@@ -0,0 +1,29 @@
+#!/usr/bin/env perl
+# vi:et:sw=4 ts=4 ft=perl
+
+use 5.010;
+use strict;
+use warnings;
+use utf8;
+
+use List::Util qw(max);
+use String::Pad qw(pad);
+
+sub center {
+ my (@lines) = @_;
+
+ my $max_width = max map { length } @lines;
+ return [ map { pad($_, $max_width, 'c') } @lines ];
+}
+
+say join qq|\n|, @{center('This', 'is', 'a test of the', 'center function')};
+
+1;
+
+__END__
+
+$ perl ch2.pl
+ This
+ is
+ a test of the
+center function