diff options
| author | Jan Krňávek <Jan.Krnavek@gmail.com> | 2022-06-12 13:37:33 +0200 |
|---|---|---|
| committer | Jan Krňávek <Jan.Krnavek@gmail.com> | 2022-06-12 13:37:33 +0200 |
| commit | e8b4c05520f8f3d495aafb6fcd5c18d0e259c672 (patch) | |
| tree | 54f86e7120d90803b1c7231601ee073d23ce11f8 /challenge-168 | |
| parent | 5e10de2ec961c81a4b4fbb997ef2e34ea67c296e (diff) | |
| download | perlweeklychallenge-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.raku | 18 | ||||
| -rw-r--r-- | challenge-168/wambash/raku/ch-2.raku | 25 |
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 +} + |
