aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMohammad S Anwar <Mohammad.Anwar@yahoo.com>2021-08-28 02:47:37 +0100
committerGitHub <noreply@github.com>2021-08-28 02:47:37 +0100
commit7cbd912b383feb5d0fb7f1bc3d1141303c83ab37 (patch)
tree1a07f092cc3f0e14d119b7839252ddb845928785
parent778b0b64325e72057b2dd1c2a346221e833d2d85 (diff)
parent663e13cd729aab7c658e719e4edf33c110f6a13b (diff)
downloadperlweeklychallenge-club-7cbd912b383feb5d0fb7f1bc3d1141303c83ab37.tar.gz
perlweeklychallenge-club-7cbd912b383feb5d0fb7f1bc3d1141303c83ab37.tar.bz2
perlweeklychallenge-club-7cbd912b383feb5d0fb7f1bc3d1141303c83ab37.zip
Merge pull request #4795 from wambash/challenge-week-127
solutions week 127
-rw-r--r--challenge-127/wambash/raku/ch-1.raku20
-rw-r--r--challenge-127/wambash/raku/ch-2.raku20
2 files changed, 40 insertions, 0 deletions
diff --git a/challenge-127/wambash/raku/ch-1.raku b/challenge-127/wambash/raku/ch-1.raku
new file mode 100644
index 0000000000..a8084942e1
--- /dev/null
+++ b/challenge-127/wambash/raku/ch-1.raku
@@ -0,0 +1,20 @@
+#!/usr/bin/env raku
+
+sub disjoint-set (Set() \M, Set() \N) {
+ M ∩ N ≡ ∅
+}
+
+multi MAIN () {
+ lines()
+ andthen .map: *.words
+ andthen disjoint-set(|.head(2))
+ andthen .say
+}
+
+multi MAIN (Bool :test($)!) {
+ use Test;
+ nok disjoint-set( (1,2,5,3,4), (4,6,7,8,9) );
+ ok disjoint-set( (1,3,5,7,9), (0,2,4,6,8) );
+ done-testing;
+}
+
diff --git a/challenge-127/wambash/raku/ch-2.raku b/challenge-127/wambash/raku/ch-2.raku
new file mode 100644
index 0000000000..fd7e771ba6
--- /dev/null
+++ b/challenge-127/wambash/raku/ch-2.raku
@@ -0,0 +1,20 @@
+#!/usr/bin/env raku
+
+sub conflict-intervals ( +@intervals ) {;
+ @intervals.grep: -> $r { @intervals.head($++).first: $r.bounds.any ~~ * }
+}
+
+multi MAIN (*@r) { #= A C B D F H E G
+ @r
+ andthen .map: -> $s, $e { $s .. $e }\
+ andthen conflict-intervals $_
+ andthen .say
+}
+
+multi MAIN (Bool :test($)!) {
+ use Test;
+ 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), (6..9,);
+ is-deeply conflict-intervals( 3..4, 5..7, 6..9, 10..14, 13..15 ), (6..9, 13..15);
+ done-testing;
+}