aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--challenge-106/mark-anderson/raku/ch-1.raku12
-rw-r--r--challenge-106/mark-anderson/raku/ch-2.raku18
2 files changed, 30 insertions, 0 deletions
diff --git a/challenge-106/mark-anderson/raku/ch-1.raku b/challenge-106/mark-anderson/raku/ch-1.raku
new file mode 100644
index 0000000000..b04144a364
--- /dev/null
+++ b/challenge-106/mark-anderson/raku/ch-1.raku
@@ -0,0 +1,12 @@
+#!/usr/bin/env raku
+
+use Test;
+plan 3;
+
+is max-gap(2, 9, 3, 5), 4;
+is max-gap(1, 3, 8, 2, 0), 5;
+is max-gap(5), 0;
+
+multi max-gap($N) { 0 }
+
+multi max-gap(*@N) { max @N.sort.rotor(2 => -1).map({ .[1] - .[0] }) }
diff --git a/challenge-106/mark-anderson/raku/ch-2.raku b/challenge-106/mark-anderson/raku/ch-2.raku
new file mode 100644
index 0000000000..2366e111ad
--- /dev/null
+++ b/challenge-106/mark-anderson/raku/ch-2.raku
@@ -0,0 +1,18 @@
+#!/usr/bin/env raku
+
+use Test;
+plan 4;
+
+is decimal-string(1, 3), "0.(3)";
+is decimal-string(1, 2), "0.5";
+is decimal-string(5, 66), "0.0(75)";
+is decimal-string(3227, 555), "5.8(144)";
+
+sub decimal-string($n, $d)
+{
+ my ($non-rep, $rep) = ($n/$d).base-repeating;
+
+ return $non-rep unless $rep;
+
+ return sprintf '%s(%s)', $non-rep, $rep;
+}