aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xchallenge-168/2colours/raku/ch-1.raku8
-rwxr-xr-xchallenge-168/2colours/raku/ch-2.raku20
2 files changed, 28 insertions, 0 deletions
diff --git a/challenge-168/2colours/raku/ch-1.raku b/challenge-168/2colours/raku/ch-1.raku
new file mode 100755
index 0000000000..b5c7508be4
--- /dev/null
+++ b/challenge-168/2colours/raku/ch-1.raku
@@ -0,0 +1,8 @@
+#!/usr/bin/env raku
+
+my @perrin-seq = 3, 0, 2, { $^c; $^a + $^b } ... *;
+my @result <==
+ @perrin-seq.grep: &is-prime
+ andthen .unique.head: 13
+ andthen .sort;
+say "f(13) = [{@result.join: ', '}]"; \ No newline at end of file
diff --git a/challenge-168/2colours/raku/ch-2.raku b/challenge-168/2colours/raku/ch-2.raku
new file mode 100755
index 0000000000..ddc4ecd2a7
--- /dev/null
+++ b/challenge-168/2colours/raku/ch-2.raku
@@ -0,0 +1,20 @@
+#!/usr/bin/env raku
+
+multi prime-factors(Int() $num) { samewith $num, 1 }
+multi prime-factors(1, $) { () }
+multi prime-factors($num where *.&is-prime, $) { ($num, ) }
+multi prime-factors($num is copy, $lower-bound) {
+ my $first-factor = ($lower-bound ^.. *).first: $num %% *;
+ my $first-exponent = 0;
+ while $num %% $first-factor {
+ $first-exponent++;
+ $num div= $first-factor;
+ }
+ |($first-factor xx $first-exponent), |prime-factors($num, $first-factor)
+}
+
+multi home-prime($num where *.&is-prime) { $num }
+multi home-prime($num) { samewith [~] prime-factors $num}
+
+my $n = prompt 'N = ';
+say home-prime($n); \ No newline at end of file