From 8a46d2a617b107590647bf6810910cd89cf8c8aa Mon Sep 17 00:00:00 2001 From: "Kian-Meng, Ang" Date: Sun, 19 May 2019 23:18:14 +0800 Subject: Challenge #008 answers and challenge #007 blog link --- challenge-007/kian-meng-ang/blog.txt | 1 + challenge-008/kian-meng-ang/perl5/ch1.pl | 36 ++++++++++++++++++++++++++++++++ challenge-008/kian-meng-ang/perl5/ch2.pl | 29 +++++++++++++++++++++++++ 3 files changed, 66 insertions(+) create mode 100644 challenge-007/kian-meng-ang/blog.txt create mode 100644 challenge-008/kian-meng-ang/perl5/ch1.pl create mode 100644 challenge-008/kian-meng-ang/perl5/ch2.pl 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 -- cgit