aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--challenge-127/mark-anderson/raku/ch-1.raku12
-rw-r--r--challenge-127/mark-anderson/raku/ch-2.raku24
2 files changed, 36 insertions, 0 deletions
diff --git a/challenge-127/mark-anderson/raku/ch-1.raku b/challenge-127/mark-anderson/raku/ch-1.raku
new file mode 100644
index 0000000000..fd6d14ef5a
--- /dev/null
+++ b/challenge-127/mark-anderson/raku/ch-1.raku
@@ -0,0 +1,12 @@
+#!/usr/bin/env raku
+
+use Test;
+plan 2;
+
+is disjoint((1, 2, 5, 3, 4), (4, 6, 7, 8, 9)), 0;
+is disjoint((1, 3, 5, 7, 9), (0, 2, 4, 6, 8)), 1;
+
+sub disjoint($s1, $s2)
+{
+ + not $s1 (&) $s2;
+}
diff --git a/challenge-127/mark-anderson/raku/ch-2.raku b/challenge-127/mark-anderson/raku/ch-2.raku
new file mode 100644
index 0000000000..e65be7ec08
--- /dev/null
+++ b/challenge-127/mark-anderson/raku/ch-2.raku
@@ -0,0 +1,24 @@
+#!/usr/bin/env raku
+
+use Test;
+plan 2;
+
+is-deeply conflict-intervals((1,4), (3,5), (6,8), (12, 13), (3,20)), [(3,5), (3,20)];
+
+is-deeply conflict-intervals((3,4), (5,7), (6,9), (10, 12), (13,15)), [(6,9),];
+
+sub conflict-intervals(**@intervals)
+{
+ gather
+ {
+ while @intervals > 1
+ {
+ if @intervals[1].head < @intervals[0].tail
+ {
+ take @intervals[1];
+ }
+
+ @intervals.shift;
+ }
+ }.Array;
+}