diff options
| author | Mohammad S Anwar <Mohammad.Anwar@yahoo.com> | 2022-04-03 15:35:56 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2022-04-03 15:35:56 +0100 |
| commit | 4da06f0577d27391a2e710d3398d2cd0cdb81b1c (patch) | |
| tree | 6612bdb8be78c9d636412a2af8edee5941e1a2e3 | |
| parent | 1dba0338f79e9bf939ee9be94269594ec1308fd2 (diff) | |
| parent | f8b8c38e333a1e1c08003dc494545b6e9ecca6f5 (diff) | |
| download | perlweeklychallenge-club-4da06f0577d27391a2e710d3398d2cd0cdb81b1c.tar.gz perlweeklychallenge-club-4da06f0577d27391a2e710d3398d2cd0cdb81b1c.tar.bz2 perlweeklychallenge-club-4da06f0577d27391a2e710d3398d2cd0cdb81b1c.zip | |
Merge pull request #5876 from ccntrq/challenge-158
Add solutions for challenge 158
| -rwxr-xr-x | challenge-158/alexander-pankoff/perl/ch-1.pl | 34 | ||||
| -rwxr-xr-x | challenge-158/alexander-pankoff/perl/ch-2.pl | 41 |
2 files changed, 75 insertions, 0 deletions
diff --git a/challenge-158/alexander-pankoff/perl/ch-1.pl b/challenge-158/alexander-pankoff/perl/ch-1.pl new file mode 100755 index 0000000000..5818eb641e --- /dev/null +++ b/challenge-158/alexander-pankoff/perl/ch-1.pl @@ -0,0 +1,34 @@ +#!/usr/bin/env perl +use strict; +use warnings; +use feature qw'say state signatures'; +no warnings qw'experimental::signatures'; + +use List::Util qw(sum0); + +run() unless caller(); + +sub run() { + say join( ', ', additive_primes() ); +} + +sub additive_primes($max = 100) { + return grep { is_prime($_) && is_prime( digit_sum($_) ) } 2 .. $max; +} + +# from challenge 150 task 2 +sub is_prime($x) { + return 0 if $x <= 1; + return 1 if $x <= 3; + for ( my $i = 2 ; $i <= sqrt($x) ; $i++ ) { + return 0 if $x % $i == 0; + } + return 1; +} + +# from challenge 149 task 1 +sub digit_sum($x) { + my $sum = sum0 split( '', $x ); + + return $sum; +} diff --git a/challenge-158/alexander-pankoff/perl/ch-2.pl b/challenge-158/alexander-pankoff/perl/ch-2.pl new file mode 100755 index 0000000000..b672d273e5 --- /dev/null +++ b/challenge-158/alexander-pankoff/perl/ch-2.pl @@ -0,0 +1,41 @@ +#!/usr/bin/env perl +use strict; +use warnings; +use feature qw'say state signatures'; +no warnings qw'experimental::signatures'; + +run() unless caller(); + +sub run() { + + say join( ', ', cuban_primes() ); + +} + +sub cuban_primes($max = 1000) { + + my @cubans = (); + my $i = 1; + my $candidate = 0; + while ( $candidate <= $max ) { + $candidate = centered_hexagonal_number($i); + push @cubans, $candidate if is_prime($candidate); + $i += 1; + } + return @cubans; + +} + +# from challenge 150 task 2 +sub is_prime($x) { + return 0 if $x <= 1; + return 1 if $x <= 3; + for ( my $i = 2 ; $i <= sqrt($x) ; $i++ ) { + return 0 if $x % $i == 0; + } + return 1; +} + +sub centered_hexagonal_number($y) { + return 3 * $y * $y + 3 * $y + 1; +} |
