aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--challenge-146/simon-proctor/raku/ch-1.raku4
-rw-r--r--challenge-146/simon-proctor/raku/ch-2.raku30
2 files changed, 34 insertions, 0 deletions
diff --git a/challenge-146/simon-proctor/raku/ch-1.raku b/challenge-146/simon-proctor/raku/ch-1.raku
new file mode 100644
index 0000000000..d495faa793
--- /dev/null
+++ b/challenge-146/simon-proctor/raku/ch-1.raku
@@ -0,0 +1,4 @@
+#!/usr/bin/env raku
+
+# Print the 10001st prime
+(1..*).grep(*.is-prime)[10000].say;
diff --git a/challenge-146/simon-proctor/raku/ch-2.raku b/challenge-146/simon-proctor/raku/ch-2.raku
new file mode 100644
index 0000000000..d527facc78
--- /dev/null
+++ b/challenge-146/simon-proctor/raku/ch-2.raku
@@ -0,0 +1,30 @@
+#!/usr/bin/env raku
+
+#| Given a Rational number find it's parent and grandparent in the Curious Fraction Tree
+multi sub MAIN( Rat() $val ) {
+ my $parent = parent($val);
+ my $grandparent = parent($parent);
+ say "parent = {$parent.nude.join("/")} grandparent = {$grandparent.nude.join("/")}";
+}
+
+multi sub MAIN('test') is hidden-from-USAGE {
+ use Test;
+ is parent(1/2), 1/1;
+ is parent(1/1), Nil;
+ is parent(2/5), 2/3;
+ is parent(5/3), 2/3;
+ done-testing;
+}
+
+subset Proper of Rat where { $^v.numerator < $^v.denominator };
+subset Improper of Rat where { $^v.numerator > $^v.denominator };
+
+multi sub parent( 1.0 ) { 1.0 }
+
+multi sub parent( Proper \v ) {
+ return v.numerator / (v.denominator - v.numerator);
+}
+
+multi sub parent( Improper \v ) {
+ return (v.numerator - v.denominator) / v.denominator;
+}