diff options
| author | Kian-Meng, Ang <kianmeng@cpan.org> | 2019-05-19 23:18:14 +0800 |
|---|---|---|
| committer | Kian-Meng, Ang <kianmeng@cpan.org> | 2019-05-19 23:18:14 +0800 |
| commit | 8a46d2a617b107590647bf6810910cd89cf8c8aa (patch) | |
| tree | 288f029ac8b1b56ad306230f6e7dbeba7b6da105 /challenge-008 | |
| parent | 7ff4ca98a648d771ede6cb20c3fc030b13fea691 (diff) | |
| download | perlweeklychallenge-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.pl | 36 | ||||
| -rw-r--r-- | challenge-008/kian-meng-ang/perl5/ch2.pl | 29 |
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 |
