aboutsummaryrefslogtreecommitdiff
path: root/challenge-008
diff options
context:
space:
mode:
authorMax Kossek <29681896+maxkossek@users.noreply.github.com>2020-05-09 14:34:07 -0700
committerMax Kossek <29681896+maxkossek@users.noreply.github.com>2020-05-09 14:34:07 -0700
commit28933d6f1d7f46305938cb3eaf2cecbeb3c46b4d (patch)
treecf25f53f0ff2bd070ac6d9f695d7e0c01ccb3055 /challenge-008
parentc193190e04829807edb9d1f2dec7be9c9a554b80 (diff)
downloadperlweeklychallenge-club-28933d6f1d7f46305938cb3eaf2cecbeb3c46b4d.tar.gz
perlweeklychallenge-club-28933d6f1d7f46305938cb3eaf2cecbeb3c46b4d.tar.bz2
perlweeklychallenge-club-28933d6f1d7f46305938cb3eaf2cecbeb3c46b4d.zip
Add challenge 1, 5, 7, and 8 solutions for Max Kossek
Diffstat (limited to 'challenge-008')
-rw-r--r--challenge-008/max-kossek/README1
-rw-r--r--challenge-008/max-kossek/perl/ch-1.pl39
-rw-r--r--challenge-008/max-kossek/perl/ch-2.pl27
3 files changed, 67 insertions, 0 deletions
diff --git a/challenge-008/max-kossek/README b/challenge-008/max-kossek/README
new file mode 100644
index 0000000000..fae891e43d
--- /dev/null
+++ b/challenge-008/max-kossek/README
@@ -0,0 +1 @@
+Solution by Max Kossek
diff --git a/challenge-008/max-kossek/perl/ch-1.pl b/challenge-008/max-kossek/perl/ch-1.pl
new file mode 100644
index 0000000000..13403f1068
--- /dev/null
+++ b/challenge-008/max-kossek/perl/ch-1.pl
@@ -0,0 +1,39 @@
+#!/usr/bin/perl
+use strict;
+use warnings;
+
+sub is_prime {
+ my $num = shift;
+ return $num > 1 if $num <= 3;
+ return if $num % 2 == 0 || $num % 3 == 0;
+
+ my $ctr = 5;
+ while ($ctr * $ctr <= $num) {
+ return if $num % $ctr == 0
+ || $num % ($ctr + 2) == 0;
+ $ctr += 6;
+ }
+
+ return $num;
+}
+
+sub get_perfect_numbers {
+ my $to_get = shift;
+ $to_get = 5 if !defined $to_get;
+
+ my @perfect_numbers = ();
+ my ($got_so_far, $ctr) = 0;
+ while ($got_so_far < $to_get) {
+ $ctr++;
+ if (is_prime(2**$ctr - 1)) {
+ push @perfect_numbers, 2**($ctr-1) * (2**$ctr - 1);
+ $got_so_far++;
+ }
+ }
+
+ return @perfect_numbers;
+}
+
+print join ",", get_perfect_numbers(5);
+
+__END__
diff --git a/challenge-008/max-kossek/perl/ch-2.pl b/challenge-008/max-kossek/perl/ch-2.pl
new file mode 100644
index 0000000000..480fb9bdc0
--- /dev/null
+++ b/challenge-008/max-kossek/perl/ch-2.pl
@@ -0,0 +1,27 @@
+#!/usr/bin/perl
+use strict;
+use warnings;
+
+sub center {
+ my @strings = @_;
+
+ my $max_len = 0;
+ foreach my $str (@strings) {
+ if (length $str > $max_len) {
+ $max_len = length $str;
+ }
+ }
+ for my $i (0..$#strings) {
+ my $space_len = ($max_len - length $strings[$i]) / 2;
+ $strings[$i] =
+ q{ } x $space_len . $strings[$i] . q{ } x $space_len;
+ }
+
+ return @strings;
+}
+
+
+print join "\n", center("This", "is", "a test of the", "center function");
+
+
+__END__