From 72f427511f8c9ae889454364dce70b7ecef0ce2a Mon Sep 17 00:00:00 2001 From: Polgár Márton Date: Tue, 7 Jun 2022 12:46:08 +0200 Subject: Challenge #168 solutions by 2colours --- challenge-168/2colours/raku/ch-1.raku | 8 ++++++++ challenge-168/2colours/raku/ch-2.raku | 20 ++++++++++++++++++++ 2 files changed, 28 insertions(+) create mode 100755 challenge-168/2colours/raku/ch-1.raku create mode 100755 challenge-168/2colours/raku/ch-2.raku 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 -- cgit