aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorrir <rirans@comcast.net>2022-03-29 10:22:38 -0400
committerrir <rirans@comcast.net>2022-03-29 10:22:38 -0400
commit18343a798aad96a4f4026b4ef129ac246294d1f4 (patch)
tree07b5e32045fe006c361d30f8d640cd6c79e1baac
parent5a952a7cb1b710ab5dc62f06e9c196f10972effd (diff)
downloadperlweeklychallenge-club-18343a798aad96a4f4026b4ef129ac246294d1f4.tar.gz
perlweeklychallenge-club-18343a798aad96a4f4026b4ef129ac246294d1f4.tar.bz2
perlweeklychallenge-club-18343a798aad96a4f4026b4ef129ac246294d1f4.zip
158
-rw-r--r--challenge-158/0rir/raku/ch-1.raku28
-rw-r--r--challenge-158/0rir/raku/ch-2.raku27
2 files changed, 55 insertions, 0 deletions
diff --git a/challenge-158/0rir/raku/ch-1.raku b/challenge-158/0rir/raku/ch-1.raku
new file mode 100644
index 0000000000..523335f473
--- /dev/null
+++ b/challenge-158/0rir/raku/ch-1.raku
@@ -0,0 +1,28 @@
+#!/usr/bin/env raku
+# :vim ft=raku sw=4 expandtabs
+use v6.d;
+
+# TASK #1 › Additive Primes to 100
+# An additive prime is a prime number whose decimal digits
+# sum to a prime.
+
+my $expected = "2, 3, 5, 7, 11, 23, 29, 41, 43, 47, 61, 67, 83, 89";
+
+my @prime = 2, 3, { first * %% none(@_), (@_[*-1], *+2 … ∞) } … ∞;
+
+sub _is-additive( Any $n --> Bool ) {
+ return True if ( [+] $n.Str.split( '' ) ).is-prime;
+ False;
+}
+
+my @result;
+
+for @prime -> $ap {
+ last if $ap > 100;
+ @result.push( $ap) if $ap.&_is-additive;
+}
+my $out = @result.join( ', ');
+
+die 'Logic error.' if $out ne $expected;
+
+say $out;
diff --git a/challenge-158/0rir/raku/ch-2.raku b/challenge-158/0rir/raku/ch-2.raku
new file mode 100644
index 0000000000..4adeda3bcd
--- /dev/null
+++ b/challenge-158/0rir/raku/ch-2.raku
@@ -0,0 +1,27 @@
+#!/usr/bin/env raku
+# :vim ft=raku sw=4 expandtabs
+use v6.d;
+
+# TASK #2 › First Series Cuban Primes
+
+my $want = 1000;
+
+my @expect;
+my @correct = 7, 19, 37, 61, 127, 271, 331, 397, 547, 631, 919,
+ 1657, 1801, 1951, 2269, 2437, 2791, 3169, 3571, 4219, 4447,
+ 5167, 5419, 6211, 7057, 7351, 8269, 9241,
+ 10267, 11719, 12097, 13267, 13669,
+ 16651, 19441, 19927, 22447, 23497, 24571, 25117, 26227;
+
+my @cuban-prime;
+ for 1 .. ∞ {
+ my $cp = ($_+1)³ - $_³;
+ last if $cp > $want;
+ if $cp.is-prime {
+ @cuban-prime.push: $cp;
+ @expect.push: @correct.shift;
+ }
+};
+
+die 'Logic error.' unless @cuban-prime eqv @expect;
+print @cuban-prime.join( ', '), '.';