aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--challenge-007/kian-meng-ang/blog.txt1
-rw-r--r--challenge-008/kian-meng-ang/perl5/ch1.pl36
-rw-r--r--challenge-008/kian-meng-ang/perl5/ch2.pl29
3 files changed, 66 insertions, 0 deletions
diff --git a/challenge-007/kian-meng-ang/blog.txt b/challenge-007/kian-meng-ang/blog.txt
new file mode 100644
index 0000000000..954d1c44c4
--- /dev/null
+++ b/challenge-007/kian-meng-ang/blog.txt
@@ -0,0 +1 @@
+https://www.kianmeng.org/2019/05/perl-weekly-challenge-007-2019-week-20.html
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