aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--challenge-116/mark-anderson/raku/ch-1.raku27
-rw-r--r--challenge-116/mark-anderson/raku/ch-2.raku13
2 files changed, 40 insertions, 0 deletions
diff --git a/challenge-116/mark-anderson/raku/ch-1.raku b/challenge-116/mark-anderson/raku/ch-1.raku
new file mode 100644
index 0000000000..d96929fe38
--- /dev/null
+++ b/challenge-116/mark-anderson/raku/ch-1.raku
@@ -0,0 +1,27 @@
+#!/usr/bin/env raku
+
+use Test;
+plan 5;
+
+is number-sequence(1234), "1,2,3,4";
+is number-sequence(91011), "9,10,11";
+is number-sequence(10203), "10203";
+is number-sequence(997998999100010011002100310041005), (997..1005).join(",");
+is number-sequence(34567891011123456789101113), "3456789101112,3456789101113";
+
+sub number-sequence($N)
+{
+ for ($N.chars div 2)...1
+ {
+ my $head = $N.substr(0, $_);
+ my $s = [\~] $head...*;
+ my ($k, $v) = $s.first(*.chars >= $N.chars, :kv);
+
+ if $N eq $v
+ {
+ return ($head.Int..$head+$k).join(",");
+ }
+ }
+
+ return $N;
+}
diff --git a/challenge-116/mark-anderson/raku/ch-2.raku b/challenge-116/mark-anderson/raku/ch-2.raku
new file mode 100644
index 0000000000..07db888cc2
--- /dev/null
+++ b/challenge-116/mark-anderson/raku/ch-2.raku
@@ -0,0 +1,13 @@
+#!/usr/bin/env raku
+
+use Test;
+plan 3;
+
+is sum-of-squares(34), 1;
+is sum-of-squares(50), 1;
+is sum-of-squares(52), 0;
+
+sub sum-of-squares($N)
+{
+ +($N.comb.map(* ** 2).sum.sqrt.narrow ~~ UInt);
+}