aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--challenge-147/mark-anderson/raku/ch-1.raku19
-rw-r--r--challenge-147/mark-anderson/raku/ch-2.raku24
2 files changed, 43 insertions, 0 deletions
diff --git a/challenge-147/mark-anderson/raku/ch-1.raku b/challenge-147/mark-anderson/raku/ch-1.raku
new file mode 100644
index 0000000000..e4dc7996fc
--- /dev/null
+++ b/challenge-147/mark-anderson/raku/ch-1.raku
@@ -0,0 +1,19 @@
+#!/usr/bin/env raku
+
+say (2, 3, { $_ + 2 } ... *).grep(&tp).head(20);
+
+multi tp(\n where *.index: 0)
+{
+ False
+}
+
+multi tp(\n where * < 10)
+{
+ n.is-prime
+}
+
+multi tp(\n)
+{
+ return False unless n.is-prime;
+ samewith(n.substr: 1);
+}
diff --git a/challenge-147/mark-anderson/raku/ch-2.raku b/challenge-147/mark-anderson/raku/ch-2.raku
new file mode 100644
index 0000000000..e81d6177a0
--- /dev/null
+++ b/challenge-147/mark-anderson/raku/ch-2.raku
@@ -0,0 +1,24 @@
+#!/usr/bin/env raku
+
+# Through trial and error I came up with the ~2200 figure.
+
+my @p = (2200...1).map(&pentagonal);
+
+for @p.combinations: 2
+{
+ if is-pentagonal(.head + .tail) and is-pentagonal(abs(.head - .tail))
+ {
+ say .head ~ ", " ~ .tail;
+ last;
+ }
+}
+
+sub pentagonal(\n)
+{
+ n * (3 * n - 1) / 2
+}
+
+sub is-pentagonal(\n)
+{
+ ((sqrt(24 * n + 1) + 1) / 6).narrow ~~ UInt
+}