diff options
| author | Jaldhar H. Vyas <jaldhar@braincells.com> | 2019-05-20 04:27:45 -0400 |
|---|---|---|
| committer | Jaldhar H. Vyas <jaldhar@braincells.com> | 2019-05-20 04:27:45 -0400 |
| commit | 9f64a0c8ab585955acdbe1b9c69540bc3d062437 (patch) | |
| tree | bbeae767987de3ba9ed722c949b2e77c51b13d59 | |
| parent | f9010bf43bc1dc90d281bf639d18d4101d8c293a (diff) | |
| download | perlweeklychallenge-club-9f64a0c8ab585955acdbe1b9c69540bc3d062437.tar.gz perlweeklychallenge-club-9f64a0c8ab585955acdbe1b9c69540bc3d062437.tar.bz2 perlweeklychallenge-club-9f64a0c8ab585955acdbe1b9c69540bc3d062437.zip | |
Challenge 8 by Jaldhar H. Vyas
| -rwxr-xr-x | challenge-008/jaldhar-h-vyas/perl5/ch-1.pl | 36 | ||||
| -rwxr-xr-x | challenge-008/jaldhar-h-vyas/perl5/ch-2.pl | 24 | ||||
| -rwxr-xr-x | challenge-008/jaldhar-h-vyas/perl6/ch-1.p6 | 34 | ||||
| -rwxr-xr-x | challenge-008/jaldhar-h-vyas/perl6/ch-2.p6 | 8 |
4 files changed, 102 insertions, 0 deletions
diff --git a/challenge-008/jaldhar-h-vyas/perl5/ch-1.pl b/challenge-008/jaldhar-h-vyas/perl5/ch-1.pl new file mode 100755 index 0000000000..0e17a21a4f --- /dev/null +++ b/challenge-008/jaldhar-h-vyas/perl5/ch-1.pl @@ -0,0 +1,36 @@ +#!/usr/bin/perl +use warnings; +use strict; +use 5.010; + +sub perfectCandidate { + my ($p) = @_; + + my $q = 2 ** $p - 1; + return $q * ($q + 1) / 2; +} + +sub isPerfect { + my ($number) = @_; + + my $total = 0; + for my $i (1 .. $number) { + if ($number % $i == 0) { + $total += $i; + } + } + + return ($total / 2 == $number); +} + +my @perfects; +my $n = 1; +while (scalar @perfects < 5) { + my $number = perfectCandidate($n); + if (isPerfect($number)) { + push @perfects, $number; + } + $n++; +} + +say join q{ }, @perfects; diff --git a/challenge-008/jaldhar-h-vyas/perl5/ch-2.pl b/challenge-008/jaldhar-h-vyas/perl5/ch-2.pl new file mode 100755 index 0000000000..b9a50e8601 --- /dev/null +++ b/challenge-008/jaldhar-h-vyas/perl5/ch-2.pl @@ -0,0 +1,24 @@ +#!/usr/bin/perl +use warnings; +use strict; +use 5.010; + +sub center { + my @lines; + my @results; + + for my $line (@_) { + push @lines, { length => length $line, text => $line }; + } + + my $maxLength = (sort { $a->{length} < $b->{length}} @lines)[0]->{length}; + + for my $line (@lines) { + push @results, + q{ } x (($maxLength - $line->{length}) / 2) . "$line->{text}\n"; + } + + return @results; +} + +print center(@ARGV); diff --git a/challenge-008/jaldhar-h-vyas/perl6/ch-1.p6 b/challenge-008/jaldhar-h-vyas/perl6/ch-1.p6 new file mode 100755 index 0000000000..6e905361eb --- /dev/null +++ b/challenge-008/jaldhar-h-vyas/perl6/ch-1.p6 @@ -0,0 +1,34 @@ +#!/usr/bin/perl6 + +sub perfectCandidate(Int $p) { + + my $q = 2 ** $p - 1; + return $q * ($q + 1) div 2; +} + +sub isPerfect(Int $number) { + + my $total = 0; + for 1 .. $number -> $i { + if $number %% $i { + $total += $i; + } + } + + return ($total / 2 == $number); +} + +multi sub MAIN() { + my Int @perfects; + my Int $n = 1; + + while @perfects.elems < 5 { + my $number = perfectCandidate($n); + if (isPerfect($number)) { + push @perfects, $number; + } + $n++; + } + + @perfects.join(' ').say; +} diff --git a/challenge-008/jaldhar-h-vyas/perl6/ch-2.p6 b/challenge-008/jaldhar-h-vyas/perl6/ch-2.p6 new file mode 100755 index 0000000000..16088afa7e --- /dev/null +++ b/challenge-008/jaldhar-h-vyas/perl6/ch-2.p6 @@ -0,0 +1,8 @@ +#!/usr/bin/perl6 + +sub center(@args) { + my $maxLength = @args>>.chars.max; + return @args.map({ .indent(($maxLength - .chars) / 2) ~ "\n"; }); +} + +center(@*ARGS).print; |
