aboutsummaryrefslogtreecommitdiff
path: root/challenge-147
diff options
context:
space:
mode:
Diffstat (limited to 'challenge-147')
-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..5780420a53
--- /dev/null
+++ b/challenge-147/mark-anderson/raku/ch-1.raku
@@ -0,0 +1,19 @@
+#!/usr/bin/env raku
+
+say (1, 2, 3, { $_ + 2 } ... *).grep(&tp).head(20);
+
+multi tp(\n where *.index: 0)
+{
+ return False;
+}
+
+multi tp(\n where * < 10)
+{
+ return 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..d7581ebace
--- /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 = reverse (1..2200).map(&pentagonal);
+
+for @p X @p
+{
+ 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)
+{
+ return (((sqrt(24 * n + 1)) + 1) / 6).narrow ~~ UInt;
+}