aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMohammad S Anwar <Mohammad.Anwar@yahoo.com>2022-04-05 14:41:38 +0100
committerGitHub <noreply@github.com>2022-04-05 14:41:38 +0100
commit0f419ec3a4bb39334acd28b2871202ce6dfa135b (patch)
tree1d5be52c4c3be10336db55b12daa1f1f5359cad2
parentcaa221e4bb39c7b8c007439b82252511425d20c6 (diff)
parente0eee17ff2e9f4f59cc6ba4e2fd5ddbde41c374e (diff)
downloadperlweeklychallenge-club-0f419ec3a4bb39334acd28b2871202ce6dfa135b.tar.gz
perlweeklychallenge-club-0f419ec3a4bb39334acd28b2871202ce6dfa135b.tar.bz2
perlweeklychallenge-club-0f419ec3a4bb39334acd28b2871202ce6dfa135b.zip
Merge pull request #5882 from Scimon/master
Challenge 1
-rw-r--r--challenge-159/simon-proctor/raku/ch-1.raku6
-rw-r--r--challenge-159/simon-proctor/raku/ch-2.raku23
2 files changed, 29 insertions, 0 deletions
diff --git a/challenge-159/simon-proctor/raku/ch-1.raku b/challenge-159/simon-proctor/raku/ch-1.raku
new file mode 100644
index 0000000000..1b03ac2520
--- /dev/null
+++ b/challenge-159/simon-proctor/raku/ch-1.raku
@@ -0,0 +1,6 @@
+#!/usr/bin/env raku
+
+#| Output the Farey Sequence of order n
+sub MAIN ( Int \n ) {
+ ((0..n) X/ (1..n)).grep( * <= 1 ).unique.sort.map( *.nude ).map( { "@_[0]/@_[1]" } ).join(", ").say
+}
diff --git a/challenge-159/simon-proctor/raku/ch-2.raku b/challenge-159/simon-proctor/raku/ch-2.raku
new file mode 100644
index 0000000000..364774c744
--- /dev/null
+++ b/challenge-159/simon-proctor/raku/ch-2.raku
@@ -0,0 +1,23 @@
+#!/usr/bin/env raku
+
+#| Given a number n print the Möbius number for it
+sub MAIN( Int() \n ) {
+ say Möbius(n);
+}
+
+multi sub prime-factors(1) { [] }
+multi sub prime-factors(Int() $x) {
+ my $p = (2..^$x).first($x %% *);
+ return $p ?? [$p, |prime-factors($x div $p)] !! [$x]
+}
+sub square-free(Int() $x) {
+ my @p = prime-factors($x);
+ @p ~~ @p.unique
+};
+sub Möbius($x) {
+ square-free($x) ??
+ (
+ prime-factors($x).elems %% 2 ?? 1 !! -1
+ )
+ !! 0;
+}