aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMohammad S Anwar <Mohammad.Anwar@yahoo.com>2022-04-03 15:35:56 +0100
committerGitHub <noreply@github.com>2022-04-03 15:35:56 +0100
commit4da06f0577d27391a2e710d3398d2cd0cdb81b1c (patch)
tree6612bdb8be78c9d636412a2af8edee5941e1a2e3
parent1dba0338f79e9bf939ee9be94269594ec1308fd2 (diff)
parentf8b8c38e333a1e1c08003dc494545b6e9ecca6f5 (diff)
downloadperlweeklychallenge-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-xchallenge-158/alexander-pankoff/perl/ch-1.pl34
-rwxr-xr-xchallenge-158/alexander-pankoff/perl/ch-2.pl41
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;
+}