aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--challenge-158/arne-sommer/blog.txt1
-rwxr-xr-xchallenge-158/arne-sommer/perl/additive-primes-perl27
-rwxr-xr-xchallenge-158/arne-sommer/perl/ch-1.pl27
-rwxr-xr-xchallenge-158/arne-sommer/perl/ch-2.pl25
-rwxr-xr-xchallenge-158/arne-sommer/perl/fscp-perl25
-rwxr-xr-xchallenge-158/arne-sommer/raku/additive-primes17
-rwxr-xr-xchallenge-158/arne-sommer/raku/additive-primes-seq7
-rwxr-xr-xchallenge-158/arne-sommer/raku/ch-1.raku17
-rwxr-xr-xchallenge-158/arne-sommer/raku/ch-2.raku17
-rwxr-xr-xchallenge-158/arne-sommer/raku/fscp17
-rwxr-xr-xchallenge-158/arne-sommer/raku/fscp-seq7
11 files changed, 187 insertions, 0 deletions
diff --git a/challenge-158/arne-sommer/blog.txt b/challenge-158/arne-sommer/blog.txt
new file mode 100644
index 0000000000..4d597ba785
--- /dev/null
+++ b/challenge-158/arne-sommer/blog.txt
@@ -0,0 +1 @@
+https://raku-musings.com/cuban-addition.html
diff --git a/challenge-158/arne-sommer/perl/additive-primes-perl b/challenge-158/arne-sommer/perl/additive-primes-perl
new file mode 100755
index 0000000000..be2c81f2d9
--- /dev/null
+++ b/challenge-158/arne-sommer/perl/additive-primes-perl
@@ -0,0 +1,27 @@
+#! /usr/bin/env perl
+
+use strict;
+use warnings;
+use feature 'say';
+use feature 'state';
+use Math::Prime::Util 'is_prime';
+use List::Util 'sum';
+
+my $limit = $ARGV[0] || 100;
+
+my @ap;
+
+while (1)
+{
+ state $current = 0;
+
+ last if $current++ >= $limit;
+ next unless is_prime($current);
+
+ my @digits = split(//, $current);
+ my $sum = sum(@digits);
+
+ push(@ap, $current) if is_prime($sum);
+}
+
+say join(", ", @ap);
diff --git a/challenge-158/arne-sommer/perl/ch-1.pl b/challenge-158/arne-sommer/perl/ch-1.pl
new file mode 100755
index 0000000000..be2c81f2d9
--- /dev/null
+++ b/challenge-158/arne-sommer/perl/ch-1.pl
@@ -0,0 +1,27 @@
+#! /usr/bin/env perl
+
+use strict;
+use warnings;
+use feature 'say';
+use feature 'state';
+use Math::Prime::Util 'is_prime';
+use List::Util 'sum';
+
+my $limit = $ARGV[0] || 100;
+
+my @ap;
+
+while (1)
+{
+ state $current = 0;
+
+ last if $current++ >= $limit;
+ next unless is_prime($current);
+
+ my @digits = split(//, $current);
+ my $sum = sum(@digits);
+
+ push(@ap, $current) if is_prime($sum);
+}
+
+say join(", ", @ap);
diff --git a/challenge-158/arne-sommer/perl/ch-2.pl b/challenge-158/arne-sommer/perl/ch-2.pl
new file mode 100755
index 0000000000..4cde38a5de
--- /dev/null
+++ b/challenge-158/arne-sommer/perl/ch-2.pl
@@ -0,0 +1,25 @@
+#! /usr/bin/env perl
+
+use strict;
+use warnings;
+use feature 'say';
+use feature 'state';
+use Math::Prime::Util 'is_prime';
+use List::Util 'sum';
+
+my $limit = $ARGV[0] || 1000;
+
+my @fscp;
+
+while (1)
+{
+ state $current = 0;
+
+ my $mapped = 3 * $current ** 2 + 3 * $current++ + 1;
+
+ last if $mapped >= $limit;
+
+ push(@fscp, $mapped) if is_prime($mapped);
+}
+
+say join(", ", @fscp);
diff --git a/challenge-158/arne-sommer/perl/fscp-perl b/challenge-158/arne-sommer/perl/fscp-perl
new file mode 100755
index 0000000000..4cde38a5de
--- /dev/null
+++ b/challenge-158/arne-sommer/perl/fscp-perl
@@ -0,0 +1,25 @@
+#! /usr/bin/env perl
+
+use strict;
+use warnings;
+use feature 'say';
+use feature 'state';
+use Math::Prime::Util 'is_prime';
+use List::Util 'sum';
+
+my $limit = $ARGV[0] || 1000;
+
+my @fscp;
+
+while (1)
+{
+ state $current = 0;
+
+ my $mapped = 3 * $current ** 2 + 3 * $current++ + 1;
+
+ last if $mapped >= $limit;
+
+ push(@fscp, $mapped) if is_prime($mapped);
+}
+
+say join(", ", @fscp);
diff --git a/challenge-158/arne-sommer/raku/additive-primes b/challenge-158/arne-sommer/raku/additive-primes
new file mode 100755
index 0000000000..56f2b7a60c
--- /dev/null
+++ b/challenge-158/arne-sommer/raku/additive-primes
@@ -0,0 +1,17 @@
+#! /usr/bin/env raku
+
+unit sub MAIN (UInt $limit = 100);
+
+my $ap := (1..Inf).grep( { .is-prime && .comb.sum.is-prime } );
+
+my @ap;
+
+loop
+{
+ state $index = 0;
+ my $current = $ap[$index++];
+ last if $current > $limit;
+ @ap.push: $current;
+}
+
+@ap.join(", ").say;
diff --git a/challenge-158/arne-sommer/raku/additive-primes-seq b/challenge-158/arne-sommer/raku/additive-primes-seq
new file mode 100755
index 0000000000..17c2eee0fd
--- /dev/null
+++ b/challenge-158/arne-sommer/raku/additive-primes-seq
@@ -0,0 +1,7 @@
+#! /usr/bin/env raku
+
+unit sub MAIN (Int $length where $length > 0 = 10);
+
+my $ap := (1..Inf).grep( *.is-prime ).grep( *.comb.sum.is-prime );
+
+$ap.head($length).join(", ").say;
diff --git a/challenge-158/arne-sommer/raku/ch-1.raku b/challenge-158/arne-sommer/raku/ch-1.raku
new file mode 100755
index 0000000000..56f2b7a60c
--- /dev/null
+++ b/challenge-158/arne-sommer/raku/ch-1.raku
@@ -0,0 +1,17 @@
+#! /usr/bin/env raku
+
+unit sub MAIN (UInt $limit = 100);
+
+my $ap := (1..Inf).grep( { .is-prime && .comb.sum.is-prime } );
+
+my @ap;
+
+loop
+{
+ state $index = 0;
+ my $current = $ap[$index++];
+ last if $current > $limit;
+ @ap.push: $current;
+}
+
+@ap.join(", ").say;
diff --git a/challenge-158/arne-sommer/raku/ch-2.raku b/challenge-158/arne-sommer/raku/ch-2.raku
new file mode 100755
index 0000000000..dc6a015865
--- /dev/null
+++ b/challenge-158/arne-sommer/raku/ch-2.raku
@@ -0,0 +1,17 @@
+#! /usr/bin/env raku
+
+unit sub MAIN (UInt $limit = 1000);
+
+my $fscp := (1..Inf).map( { 3 * $_ ** 2 + 3 * $_ + 1 } ).grep( *.is-prime );
+
+my @fscp;
+
+loop
+{
+ state $index = 0;
+ my $current = $fscp[$index++];
+ last if $current > $limit;
+ @fscp.push: $current;
+}
+
+@fscp.join(", ").say;
diff --git a/challenge-158/arne-sommer/raku/fscp b/challenge-158/arne-sommer/raku/fscp
new file mode 100755
index 0000000000..dc6a015865
--- /dev/null
+++ b/challenge-158/arne-sommer/raku/fscp
@@ -0,0 +1,17 @@
+#! /usr/bin/env raku
+
+unit sub MAIN (UInt $limit = 1000);
+
+my $fscp := (1..Inf).map( { 3 * $_ ** 2 + 3 * $_ + 1 } ).grep( *.is-prime );
+
+my @fscp;
+
+loop
+{
+ state $index = 0;
+ my $current = $fscp[$index++];
+ last if $current > $limit;
+ @fscp.push: $current;
+}
+
+@fscp.join(", ").say;
diff --git a/challenge-158/arne-sommer/raku/fscp-seq b/challenge-158/arne-sommer/raku/fscp-seq
new file mode 100755
index 0000000000..a1ac67de71
--- /dev/null
+++ b/challenge-158/arne-sommer/raku/fscp-seq
@@ -0,0 +1,7 @@
+#! /usr/bin/env raku
+
+unit sub MAIN (UInt $length = 10);
+
+my $fscp := (1..Inf).map( { 3 * $_ ** 2 + 3 * $_ + 1 } ).grep( *.is-prime );
+
+$fscp.head($length).join(", ").say;