diff options
| author | Max Kossek <29681896+maxkossek@users.noreply.github.com> | 2020-05-09 14:34:07 -0700 |
|---|---|---|
| committer | Max Kossek <29681896+maxkossek@users.noreply.github.com> | 2020-05-09 14:34:07 -0700 |
| commit | 28933d6f1d7f46305938cb3eaf2cecbeb3c46b4d (patch) | |
| tree | cf25f53f0ff2bd070ac6d9f695d7e0c01ccb3055 /challenge-008 | |
| parent | c193190e04829807edb9d1f2dec7be9c9a554b80 (diff) | |
| download | perlweeklychallenge-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/README | 1 | ||||
| -rw-r--r-- | challenge-008/max-kossek/perl/ch-1.pl | 39 | ||||
| -rw-r--r-- | challenge-008/max-kossek/perl/ch-2.pl | 27 |
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__ |
