aboutsummaryrefslogtreecommitdiff
path: root/challenge-168
diff options
context:
space:
mode:
authorMohammad S Anwar <Mohammad.Anwar@yahoo.com>2022-06-12 14:13:06 +0100
committerGitHub <noreply@github.com>2022-06-12 14:13:06 +0100
commit5d1651244fadd2e5573210d5c06ff3dc9ac796a1 (patch)
tree5ce40b2d20d0074d7eb4400d5769a4a75f5cd72f /challenge-168
parent79ce82da7c249f4af4572b7f951bca0adc45acbe (diff)
parente8b4c05520f8f3d495aafb6fcd5c18d0e259c672 (diff)
downloadperlweeklychallenge-club-5d1651244fadd2e5573210d5c06ff3dc9ac796a1.tar.gz
perlweeklychallenge-club-5d1651244fadd2e5573210d5c06ff3dc9ac796a1.tar.bz2
perlweeklychallenge-club-5d1651244fadd2e5573210d5c06ff3dc9ac796a1.zip
Merge pull request #6245 from wambash/challenge-week-168
solutions week 168
Diffstat (limited to 'challenge-168')
-rw-r--r--challenge-168/wambash/raku/ch-1.raku18
-rw-r--r--challenge-168/wambash/raku/ch-2.raku25
2 files changed, 43 insertions, 0 deletions
diff --git a/challenge-168/wambash/raku/ch-1.raku b/challenge-168/wambash/raku/ch-1.raku
new file mode 100644
index 0000000000..651431035f
--- /dev/null
+++ b/challenge-168/wambash/raku/ch-1.raku
@@ -0,0 +1,18 @@
+#!/usr/bin/env raku
+constant @perrin-seq = 3, 0, 2, -> $a, $b, $ { $a+$b } ... *;
+constant @perrin-prime = @perrin-seq.skip.grep( *.is-prime).unique;
+
+sub perrin-prime ($head = 13) {
+ @perrin-prime.head: $head
+}
+
+multi MAIN (Bool :test($)!) {
+ use Test;
+ is @perrin-seq.head(8), (3, 0, 2, 3, 2, 5, 5, 7,);
+ is perrin-prime(13), (2, 3, 5, 7, 17, 29, 277, 367, 853, 14197, 43721, 1442968193, 792606555396977);
+ done-testing;
+}
+
+multi MAIN ($head = 13) {
+ put perrin-prime $head
+}
diff --git a/challenge-168/wambash/raku/ch-2.raku b/challenge-168/wambash/raku/ch-2.raku
new file mode 100644
index 0000000000..165454bbe7
--- /dev/null
+++ b/challenge-168/wambash/raku/ch-2.raku
@@ -0,0 +1,25 @@
+#!/usr/bin/env raku
+use Prime::Factor;
+
+sub home-prime ($n) {
+ $n, {[~] prime-factors $_} ...^ * == *
+}
+
+multi MAIN (Bool :test($)!) {
+ use Test;
+ is home-prime(10).tail, 773;
+ is home-prime(10), <10 25 55 511 773>;
+ is home-prime( 8).tail, 3331113965338635107;
+ done-testing;
+}
+
+multi MAIN ($n, Bool :s(:$steps) where *.so ) {
+ .say for lazy home-prime $n
+}
+
+multi MAIN ($n, Bool :s(:$steps) = False) {
+ home-prime $n
+ andthen .tail
+ andthen .put
+}
+