aboutsummaryrefslogtreecommitdiff
path: root/challenge-168
diff options
context:
space:
mode:
authorJan Krňávek <Jan.Krnavek@gmail.com>2022-06-12 13:37:33 +0200
committerJan Krňávek <Jan.Krnavek@gmail.com>2022-06-12 13:37:33 +0200
commite8b4c05520f8f3d495aafb6fcd5c18d0e259c672 (patch)
tree54f86e7120d90803b1c7231601ee073d23ce11f8 /challenge-168
parent5e10de2ec961c81a4b4fbb997ef2e34ea67c296e (diff)
downloadperlweeklychallenge-club-e8b4c05520f8f3d495aafb6fcd5c18d0e259c672.tar.gz
perlweeklychallenge-club-e8b4c05520f8f3d495aafb6fcd5c18d0e259c672.tar.bz2
perlweeklychallenge-club-e8b4c05520f8f3d495aafb6fcd5c18d0e259c672.zip
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
+}
+