aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJaldhar H. Vyas <jaldhar@braincells.com>2019-05-20 04:27:45 -0400
committerJaldhar H. Vyas <jaldhar@braincells.com>2019-05-20 04:27:45 -0400
commit9f64a0c8ab585955acdbe1b9c69540bc3d062437 (patch)
treebbeae767987de3ba9ed722c949b2e77c51b13d59
parentf9010bf43bc1dc90d281bf639d18d4101d8c293a (diff)
downloadperlweeklychallenge-club-9f64a0c8ab585955acdbe1b9c69540bc3d062437.tar.gz
perlweeklychallenge-club-9f64a0c8ab585955acdbe1b9c69540bc3d062437.tar.bz2
perlweeklychallenge-club-9f64a0c8ab585955acdbe1b9c69540bc3d062437.zip
Challenge 8 by Jaldhar H. Vyas
-rwxr-xr-xchallenge-008/jaldhar-h-vyas/perl5/ch-1.pl36
-rwxr-xr-xchallenge-008/jaldhar-h-vyas/perl5/ch-2.pl24
-rwxr-xr-xchallenge-008/jaldhar-h-vyas/perl6/ch-1.p634
-rwxr-xr-xchallenge-008/jaldhar-h-vyas/perl6/ch-2.p68
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;