diff options
| author | rir <rirans@comcast.net> | 2022-03-29 10:22:38 -0400 |
|---|---|---|
| committer | rir <rirans@comcast.net> | 2022-03-29 10:22:38 -0400 |
| commit | 18343a798aad96a4f4026b4ef129ac246294d1f4 (patch) | |
| tree | 07b5e32045fe006c361d30f8d640cd6c79e1baac | |
| parent | 5a952a7cb1b710ab5dc62f06e9c196f10972effd (diff) | |
| download | perlweeklychallenge-club-18343a798aad96a4f4026b4ef129ac246294d1f4.tar.gz perlweeklychallenge-club-18343a798aad96a4f4026b4ef129ac246294d1f4.tar.bz2 perlweeklychallenge-club-18343a798aad96a4f4026b4ef129ac246294d1f4.zip | |
158
| -rw-r--r-- | challenge-158/0rir/raku/ch-1.raku | 28 | ||||
| -rw-r--r-- | challenge-158/0rir/raku/ch-2.raku | 27 |
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( ', '), '.'; |
