aboutsummaryrefslogtreecommitdiff
path: root/challenge-127/deadmarshal
diff options
context:
space:
mode:
authordeadmarshal <adeadmarshal@gmail.com>2023-11-04 19:38:44 +0330
committerdeadmarshal <adeadmarshal@gmail.com>2023-11-04 19:38:44 +0330
commit3c934ca8f0f3d6122863c26dc4d726965a37ed1c (patch)
tree97bf9565883b0cd80bdd167511a685b0e92aae9c /challenge-127/deadmarshal
parent55f9e24e0fa53f838983f967fafb93745530c6e0 (diff)
downloadperlweeklychallenge-club-3c934ca8f0f3d6122863c26dc4d726965a37ed1c.tar.gz
perlweeklychallenge-club-3c934ca8f0f3d6122863c26dc4d726965a37ed1c.tar.bz2
perlweeklychallenge-club-3c934ca8f0f3d6122863c26dc4d726965a37ed1c.zip
TWC127
Diffstat (limited to 'challenge-127/deadmarshal')
-rw-r--r--challenge-127/deadmarshal/blog.txt1
-rw-r--r--challenge-127/deadmarshal/c/ch-1.c27
-rw-r--r--challenge-127/deadmarshal/c/ch-2.c33
-rw-r--r--challenge-127/deadmarshal/cpp/ch-1.cpp30
-rw-r--r--challenge-127/deadmarshal/cpp/ch-2.cpp37
-rw-r--r--challenge-127/deadmarshal/d/ch1.d23
-rw-r--r--challenge-127/deadmarshal/d/ch2.d23
-rw-r--r--challenge-127/deadmarshal/go/ch1.go39
-rw-r--r--challenge-127/deadmarshal/go/ch2.go31
-rw-r--r--challenge-127/deadmarshal/lua/ch-1.lua19
-rw-r--r--challenge-127/deadmarshal/lua/ch-2.lua17
-rw-r--r--challenge-127/deadmarshal/modula-3/ch1/src/Ch1.m329
-rw-r--r--challenge-127/deadmarshal/modula-3/ch1/src/m3makefile5
-rw-r--r--challenge-127/deadmarshal/modula-3/ch2/src/Ch2.m340
-rw-r--r--challenge-127/deadmarshal/modula-3/ch2/src/m3makefile5
-rw-r--r--challenge-127/deadmarshal/oberon/Ch1.Mod35
-rw-r--r--challenge-127/deadmarshal/oberon/Ch2.Mod47
-rw-r--r--challenge-127/deadmarshal/pascal/ch1.pas38
-rw-r--r--challenge-127/deadmarshal/pascal/ch2.pas36
-rw-r--r--challenge-127/deadmarshal/perl/ch-1.pl15
-rw-r--r--challenge-127/deadmarshal/perl/ch-2.pl22
-rw-r--r--challenge-127/deadmarshal/raku/ch-1.raku10
-rw-r--r--challenge-127/deadmarshal/raku/ch-2.raku21
-rw-r--r--challenge-127/deadmarshal/ruby/ch1.rb14
-rw-r--r--challenge-127/deadmarshal/ruby/ch2.rb17
25 files changed, 614 insertions, 0 deletions
diff --git a/challenge-127/deadmarshal/blog.txt b/challenge-127/deadmarshal/blog.txt
new file mode 100644
index 0000000000..11923955a8
--- /dev/null
+++ b/challenge-127/deadmarshal/blog.txt
@@ -0,0 +1 @@
+https://deadmarshal.blogspot.com/2023/11/twc127.html
diff --git a/challenge-127/deadmarshal/c/ch-1.c b/challenge-127/deadmarshal/c/ch-1.c
new file mode 100644
index 0000000000..20f4ea31f4
--- /dev/null
+++ b/challenge-127/deadmarshal/c/ch-1.c
@@ -0,0 +1,27 @@
+#include<stdio.h>
+#include<assert.h>
+
+int disjoint_sets(int *arr1,int *arr2, size_t sz)
+{
+ int hash[10] = {0};
+ for(size_t i = 0; i < sz; ++i)
+ {
+ hash[arr1[i] % 10]++;
+ hash[arr2[i] % 10]++;
+ }
+ for(size_t i = 0; i < 10; ++i) if(hash[i] > 1) return 0;
+ return 1;
+}
+
+int main(void)
+{
+ int arr1[] = {1,2,5,3,4};
+ int arr2[] = {4,6,7,8,9};
+ int arr3[] = {1,3,5,7,9};
+ int arr4[] = {0,2,4,6,8};
+ const size_t sz = 5;
+ printf("%d\n",disjoint_sets(arr1,arr2,sz));
+ printf("%d\n",disjoint_sets(arr3,arr4,sz));
+ return 0;
+}
+
diff --git a/challenge-127/deadmarshal/c/ch-2.c b/challenge-127/deadmarshal/c/ch-2.c
new file mode 100644
index 0000000000..77d061dab9
--- /dev/null
+++ b/challenge-127/deadmarshal/c/ch-2.c
@@ -0,0 +1,33 @@
+#include<stdio.h>
+#include<math.h> // -lm
+
+struct Interval
+{
+ int x,y;
+};
+
+void conflict_intervals(struct Interval *arr,size_t sz)
+{
+ for(size_t i = 1; i < sz; ++i)
+ {
+ int b = 0;
+ for(size_t j = 0; j < i; ++j)
+ {
+ if((arr[i].x >= arr[j].x) && (arr[i].x <= arr[j].y))
+ b = 1;
+ }
+ if(b) printf("(%d %d) ",arr[i].x,arr[i].y);
+ }
+ puts("");
+}
+
+int main(void)
+{
+ struct Interval arr[] = {{1,4},{3,5},{6,8},{12,13},{3,20}};
+ struct Interval arr2[] = {{3,4},{5,7},{6,9},{10,12},{13,15}};
+ size_t sz = sizeof(arr)/sizeof(*arr);
+ conflict_intervals(arr,sz);
+ conflict_intervals(arr2,sz);
+ return 0;
+}
+
diff --git a/challenge-127/deadmarshal/cpp/ch-1.cpp b/challenge-127/deadmarshal/cpp/ch-1.cpp
new file mode 100644
index 0000000000..b6cf02bb6a
--- /dev/null
+++ b/challenge-127/deadmarshal/cpp/ch-1.cpp
@@ -0,0 +1,30 @@
+#include<iostream>
+#include<vector>
+#include<set>
+
+template<typename T>
+bool is_disjoint(const std::set<T> &s1,
+ const std::set<T> &s2)
+{
+ for(auto it = s1.cbegin(); it != s1.cend(); ++it)
+ if(s2.count(*it)) return false;
+ return true;
+}
+
+template<typename T>
+bool disjoint_sets(const std::vector<T> &vec1,
+ const std::vector<T> &vec2)
+{
+ return is_disjoint<T>({vec1.cbegin(),vec1.cend()},
+ {vec2.cbegin(),vec2.cend()});
+}
+
+int main()
+{
+ std::vector<int> vec1{1,2,5,3,4},vec2{4,6,7,8,9};
+ std::vector<int> vec3{1,3,5,7,9},vec4{0,2,4,6,8};
+ std::cout << std::boolalpha << disjoint_sets<int>(vec1,vec2) << '\n'
+ << disjoint_sets<int>(vec3,vec4) << '\n';
+ return 0;
+}
+
diff --git a/challenge-127/deadmarshal/cpp/ch-2.cpp b/challenge-127/deadmarshal/cpp/ch-2.cpp
new file mode 100644
index 0000000000..23784eb6bc
--- /dev/null
+++ b/challenge-127/deadmarshal/cpp/ch-2.cpp
@@ -0,0 +1,37 @@
+#include<iostream>
+#include<vector>
+
+struct Interval
+{
+ friend std::ostream &operator<<(std::ostream &os,
+ const Interval &interval)
+ {
+ os << '(' << interval.x << ',' << interval.y << ')';
+ return os;
+ }
+
+ int x,y;
+};
+
+template<typename T>
+void conflict_intervals(const std::vector<T> &vec)
+{
+ for(size_t i = 1; i < vec.size(); ++i)
+ {
+ bool b = false;
+ for(size_t j = 0; j < i ; ++j)
+ if((vec.at(i).x >= vec.at(i).x) && (vec.at(i).x <= vec.at(j).y)) b = true;
+ if(b) std::cout << vec.at(i) << ' ';
+ }
+ std::cout << '\n';
+}
+
+int main()
+{
+ std::vector<Interval> vec1{{1,4},{3,5},{6,8},{12,13},{3,20}};
+ std::vector<Interval> vec2{{3,4},{5,7},{6,9},{10,12},{13,15}};
+ conflict_intervals<Interval>(vec1);
+ conflict_intervals<Interval>(vec2);
+ return 0;
+}
+
diff --git a/challenge-127/deadmarshal/d/ch1.d b/challenge-127/deadmarshal/d/ch1.d
new file mode 100644
index 0000000000..001171d80f
--- /dev/null
+++ b/challenge-127/deadmarshal/d/ch1.d
@@ -0,0 +1,23 @@
+import std.stdio:writeln;
+import std.algorithm:all;
+
+bool disjoint_sets(ref int[] arr1,ref int[] arr2)
+{
+ int[int] h;
+ for(int i = 0; i < arr1.length; ++i)
+ {
+ h[arr1[i]]++;
+ h[arr2[i]]++;
+ }
+ if(h.values.all!(a => a == 1)) return true;
+ return false;
+}
+
+void main()
+{
+ int[] arr1 = [1,2,5,3,4], arr2 = [4,6,7,8,9];
+ int[] arr3 = [1,3,5,7,9], arr4 = [0,2,4,6,8];
+ writeln(disjoint_sets(arr1,arr2));
+ writeln(disjoint_sets(arr3,arr4));
+}
+
diff --git a/challenge-127/deadmarshal/d/ch2.d b/challenge-127/deadmarshal/d/ch2.d
new file mode 100644
index 0000000000..730c903d6e
--- /dev/null
+++ b/challenge-127/deadmarshal/d/ch2.d
@@ -0,0 +1,23 @@
+import std.stdio:writeln;
+
+int[][] conflict_intervals(ref int[][] arr)
+{
+ int[][] ret;
+ for(ulong i = 1; i < arr.length; ++i)
+ {
+ bool b = false;
+ for(ulong j = 0; j < i; ++j)
+ if(arr[i][0] >= arr[j][0] && arr[i][0] <= arr[j][1]) b = true;
+ if(b) ret ~= arr[i];
+ }
+ return ret;
+}
+
+void main()
+{
+ int[][] arr = [[1,4],[3,5],[6,8],[12,13],[3,20]];
+ int[][] arr2 = [[3,4],[5,7],[6,9],[10,12],[13,15]];
+ writeln(conflict_intervals(arr));
+ writeln(conflict_intervals(arr2));
+}
+
diff --git a/challenge-127/deadmarshal/go/ch1.go b/challenge-127/deadmarshal/go/ch1.go
new file mode 100644
index 0000000000..3c141feb1c
--- /dev/null
+++ b/challenge-127/deadmarshal/go/ch1.go
@@ -0,0 +1,39 @@
+package main
+
+import (
+ "fmt"
+)
+
+func values(m map[int]int) []int {
+ ret := []int{}
+ for _, v := range m {
+ ret = append(ret, v)
+ }
+ return ret
+}
+
+func disjointSets(arr1, arr2 []int) bool {
+ m := make(map[int]int)
+ for _, v := range arr1 {
+ m[v]++
+ }
+ for _, v := range arr2 {
+ m[v]++
+ }
+ vals := values(m)
+ for _, v := range vals {
+ if v > 1 {
+ return false
+ }
+ }
+ return true
+}
+
+func main() {
+ arr1 := []int{1, 2, 5, 3, 4}
+ arr2 := []int{4, 6, 7, 8, 9}
+ arr3 := []int{1, 3, 5, 7, 9}
+ arr4 := []int{0, 2, 4, 6, 8}
+ fmt.Println(disjointSets(arr1, arr2))
+ fmt.Println(disjointSets(arr3, arr4))
+}
diff --git a/challenge-127/deadmarshal/go/ch2.go b/challenge-127/deadmarshal/go/ch2.go
new file mode 100644
index 0000000000..a62b190e67
--- /dev/null
+++ b/challenge-127/deadmarshal/go/ch2.go
@@ -0,0 +1,31 @@
+package main
+
+import (
+ "fmt"
+)
+
+type interval struct {
+ x, y int
+}
+
+func conflictIntervals(arr []interval) {
+ for i := 1; i < len(arr); i++ {
+ b := false
+ for j := 0; j < i; j++ {
+ if arr[i].x >= arr[j].x && arr[i].x <= arr[j].y {
+ b = true
+ }
+ }
+ if b {
+ fmt.Printf("(%d %d) ", arr[i].x, arr[i].y)
+ }
+ }
+ fmt.Println()
+}
+
+func main() {
+ arr := []interval{{1, 4}, {3, 5}, {6, 8}, {12, 13}, {3, 20}}
+ arr2 := []interval{{3, 4}, {5, 7}, {6, 9}, {10, 12}, {13, 15}}
+ conflictIntervals(arr)
+ conflictIntervals(arr2)
+}
diff --git a/challenge-127/deadmarshal/lua/ch-1.lua b/challenge-127/deadmarshal/lua/ch-1.lua
new file mode 100644
index 0000000000..ae46729725
--- /dev/null
+++ b/challenge-127/deadmarshal/lua/ch-1.lua
@@ -0,0 +1,19 @@
+#!/usr/bin/env lua
+
+local function disjoint_sets(t1,t2)
+ assert(type(t1) == 'table' and
+ type(t2) == 'table','t1,t2 must be tables!')
+ local h = {}
+ for i=1,#t1 do
+ h[t1[i]] = (h[t1[i]] or 0) + 1
+ h[t2[i]] = (h[t2[i]] or 0) + 1
+ end
+ for _,v in pairs(h) do
+ if v > 1 then return false end
+ end
+ return true
+end
+
+print(disjoint_sets({1,2,5,3,4},{4,6,7,8,9}))
+print(disjoint_sets({1,3,5,7,9},{0,2,4,6,8}))
+
diff --git a/challenge-127/deadmarshal/lua/ch-2.lua b/challenge-127/deadmarshal/lua/ch-2.lua
new file mode 100644
index 0000000000..60136c3c29
--- /dev/null
+++ b/challenge-127/deadmarshal/lua/ch-2.lua
@@ -0,0 +1,17 @@
+#!/usr/bin/env lua
+
+local function conflict_intervals(t)
+ assert(type(t) == 'table','t must be a table!')
+ for i=2,#t do
+ local b = false
+ for j=1,i-1 do
+ if t[i][1] >= t[j][1] and t[i][1] <= t[j][2] then b = true end
+ end
+ if b then io.write(string.format('(%d %d) ',t[i][1],t[i][2])) end
+ end
+ print("")
+end
+
+conflict_intervals{{1,4},{3,5},{6,8},{12,13},{3,20}}
+conflict_intervals{{3,4},{5,7},{6,9},{10,12},{13,15}}
+
diff --git a/challenge-127/deadmarshal/modula-3/ch1/src/Ch1.m3 b/challenge-127/deadmarshal/modula-3/ch1/src/Ch1.m3
new file mode 100644
index 0000000000..df655cb05c
--- /dev/null
+++ b/challenge-127/deadmarshal/modula-3/ch1/src/Ch1.m3
@@ -0,0 +1,29 @@
+MODULE Ch1 EXPORTS Main;
+
+IMPORT IO,SIO;
+
+VAR
+ A1:ARRAY[0..4] OF INTEGER := ARRAY OF INTEGER{1,2,5,3,4};
+ A2:ARRAY[0..4] OF INTEGER := ARRAY OF INTEGER{4,6,7,8,9};
+ A3:ARRAY[0..4] OF INTEGER := ARRAY OF INTEGER{1,3,5,7,9};
+ A4:ARRAY[0..4] OF INTEGER := ARRAY OF INTEGER{0,2,4,6,8};
+
+PROCEDURE DisjointSets(VAR A1,A2:ARRAY OF INTEGER):BOOLEAN =
+ VAR
+ Hash:ARRAY[0..9] OF INTEGER := ARRAY[0..9] OF INTEGER{0,..};
+ BEGIN
+ FOR I := FIRST(A1) TO LAST(A1) DO
+ INC(Hash[A1[I]]);
+ INC(Hash[A2[I]]);
+ END;
+ FOR I := FIRST(Hash) TO LAST(Hash) DO
+ IF Hash[I] > 1 THEN RETURN FALSE END;
+ END;
+ RETURN TRUE
+ END DisjointSets;
+
+BEGIN
+ SIO.PutBool(DisjointSets(A1,A2)); IO.Put("\n");
+ SIO.PutBool(DisjointSets(A3,A4)); IO.Put("\n");
+END Ch1.
+
diff --git a/challenge-127/deadmarshal/modula-3/ch1/src/m3makefile b/challenge-127/deadmarshal/modula-3/ch1/src/m3makefile
new file mode 100644
index 0000000000..9f66e4a51f
--- /dev/null
+++ b/challenge-127/deadmarshal/modula-3/ch1/src/m3makefile
@@ -0,0 +1,5 @@
+import("libm3")
+import("libsio")
+implementation("Ch1")
+program("ch1")
+
diff --git a/challenge-127/deadmarshal/modula-3/ch2/src/Ch2.m3 b/challenge-127/deadmarshal/modula-3/ch2/src/Ch2.m3
new file mode 100644
index 0000000000..436e36444b
--- /dev/null
+++ b/challenge-127/deadmarshal/modula-3/ch2/src/Ch2.m3
@@ -0,0 +1,40 @@
+MODULE Ch2 EXPORTS Main;
+
+IMPORT IO;
+FROM Fmt IMPORT F,Int;
+
+TYPE
+ Interval = RECORD
+ X,Y:INTEGER;
+ END;
+
+VAR
+ A1:ARRAY[0..4] OF Interval := ARRAY OF Interval{Interval{1,4},
+ Interval{3,5},
+ Interval{6,8},
+ Interval{12,13},
+ Interval{3,20}};
+ A2:ARRAY[0..4] OF Interval := ARRAY OF Interval{Interval{3,4},
+ Interval{5,7},
+ Interval{6,9},
+ Interval{10,12},
+ Interval{13,15}};
+
+PROCEDURE ConflictIntervals(VAR Arr:ARRAY OF Interval) =
+ VAR B:BOOLEAN;
+ BEGIN
+ FOR I := FIRST(Arr)+1 TO LAST(Arr) DO
+ B := FALSE;
+ FOR J := FIRST(Arr) TO I-1 DO
+ IF (Arr[I].X >= Arr[J].X) AND (Arr[I].X <= Arr[J].Y) THEN B := TRUE END
+ END;
+ IF B THEN IO.Put(F("(%s %s) ",Int(Arr[I].X),Int(Arr[I].Y))) END
+ END;
+ IO.Put("\n")
+ END ConflictIntervals;
+
+BEGIN
+ ConflictIntervals(A1);
+ ConflictIntervals(A2);
+END Ch2.
+
diff --git a/challenge-127/deadmarshal/modula-3/ch2/src/m3makefile b/challenge-127/deadmarshal/modula-3/ch2/src/m3makefile
new file mode 100644
index 0000000000..798c627ef3
--- /dev/null
+++ b/challenge-127/deadmarshal/modula-3/ch2/src/m3makefile
@@ -0,0 +1,5 @@
+import("libm3")
+import("libsio")
+implementation("Ch2")
+program("ch2")
+
diff --git a/challenge-127/deadmarshal/oberon/Ch1.Mod b/challenge-127/deadmarshal/oberon/Ch1.Mod
new file mode 100644
index 0000000000..04199f0bd8
--- /dev/null
+++ b/challenge-127/deadmarshal/oberon/Ch1.Mod
@@ -0,0 +1,35 @@
+MODULE Ch1;
+
+ IMPORT Out;
+
+ VAR
+ A1,A2,A3,A4:ARRAY 5 OF LONGINT;
+
+ PROCEDURE Init;
+ BEGIN
+ A1[0] := 1; A1[1] := 2; A1[2] := 5; A1[3] := 3; A1[4] := 4;
+ A2[0] := 4; A2[1] := 6; A2[2] := 7; A2[3] := 8; A2[4] := 9;
+ A3[0] := 1; A3[1] := 3; A3[2] := 5; A3[3] := 7; A3[4] := 9;
+ A4[0] := 0; A4[1] := 2; A4[2] := 4; A4[3] := 6; A4[4] := 8;
+ END Init;
+
+ PROCEDURE DisjointSets(VAR arr1,arr2:ARRAY OF LONGINT):LONGINT;
+ VAR
+ i:LONGINT;
+ hash:ARRAY 10 OF LONGINT;
+ BEGIN
+ FOR i := 0 TO LEN(hash)-1 DO hash[i] := 0 END;
+ FOR i := 0 TO LEN(arr1)-1 DO
+ INC(hash[arr1[i] MOD 10]);
+ INC(hash[arr2[i] MOD 10]);
+ END;
+ FOR i := 0 TO LEN(arr1)-1 DO IF hash[i] > 1 THEN RETURN 0 END END;
+ RETURN 1
+ END DisjointSets;
+
+BEGIN
+ Init;
+ Out.Int(DisjointSets(A1,A2),0); Out.Ln;
+ Out.Int(DisjointSets(A3,A4),0); Out.Ln
+END Ch1.
+
diff --git a/challenge-127/deadmarshal/oberon/Ch2.Mod b/challenge-127/deadmarshal/oberon/Ch2.Mod
new file mode 100644
index 0000000000..bed67784fb
--- /dev/null
+++ b/challenge-127/deadmarshal/oberon/Ch2.Mod
@@ -0,0 +1,47 @@
+MODULE Ch2;
+
+ IMPORT Out;
+
+ TYPE
+ Interval = RECORD
+ x*,y*:LONGINT;
+ END;
+
+ VAR
+ A1,A2:ARRAY 5 OF Interval;
+
+ PROCEDURE Init;
+ BEGIN
+ A1[0].x := 1; A1[0].y := 4; A1[1].x := 3; A1[1].y := 5;
+ A1[2].x := 6; A1[2].y := 8; A1[3].x := 12; A1[3].y := 13;
+ A1[4].x := 3; A1[4].y := 20;
+ A2[0].x := 3; A2[0].y := 4; A2[1].x := 5; A2[1].y := 7;
+ A2[2].x := 6; A2[2].y := 9; A2[3].x := 10; A2[3].y := 12;
+ A2[4].x := 13; A2[4].y := 15;
+ END Init;
+
+ PROCEDURE ConflictIntervals(VAR arr:ARRAY OF Interval);
+ VAR
+ i,j:LONGINT;
+ b:BOOLEAN;
+ BEGIN
+ FOR i := 1 TO LEN(arr)-1 DO
+ b := FALSE;
+ FOR j := 0 TO i-1 DO
+ IF (arr[i].x >= arr[j].x) & (arr[i].x <= arr[j].y) THEN b := TRUE END
+ END;
+ IF b THEN
+ Out.Char('('); Out.Int(arr[i].x,0);
+ Out.Char(','); Out.Int(arr[i].y,0);
+ Out.Char(')'); Out.Char(' ')
+ END
+ END;
+ Out.Ln
+ END ConflictIntervals;
+
+BEGIN
+ Init;
+ ConflictIntervals(A1);
+ ConflictIntervals(A2);
+END Ch2.
+
diff --git a/challenge-127/deadmarshal/pascal/ch1.pas b/challenge-127/deadmarshal/pascal/ch1.pas
new file mode 100644
index 0000000000..f564dfb5c8
--- /dev/null
+++ b/challenge-127/deadmarshal/pascal/ch1.pas
@@ -0,0 +1,38 @@
+program Ch1;
+
+{$mode objfpc}
+{$assertions on}
+
+uses
+ SysUtils,Types;
+
+var
+ A1,A2,A3,A4:TIntegerDynArray;
+
+function DisjointSets(var Arr1,Arr2:TIntegerDynArray):Boolean;
+var
+ I:Integer;
+ Hash:array[0..9] of Integer;
+begin
+ {Assert because we don't handle the case where the arrays are of different
+ length.}
+ Assert(Length(Arr1) = Length(Arr2),'Arrays'' length must be the same!');
+ FillDWord(Hash,10,0);
+ for I := Low(Arr1) to High(Arr1) do
+ begin
+ Inc(Hash[Arr1[I] mod 10]);
+ Inc(Hash[Arr2[I] mod 10]);
+ end;
+ for I := Low(Hash) to High(Hash) do if Hash[I] > 1 then Exit(False);
+ Exit(True);
+end;
+
+begin
+ A1 := [1,2,5,3,4];
+ A2 := [4,6,7,8,9];
+ A3 := [1,3,5,7,9];
+ A4 := [0,2,4,6,8];
+ WriteLn(DisjointSets(A1,A2));
+ WriteLn(DisjointSets(A3,A4));
+end.
+
diff --git a/challenge-127/deadmarshal/pascal/ch2.pas b/challenge-127/deadmarshal/pascal/ch2.pas
new file mode 100644
index 0000000000..5d2099b1d6
--- /dev/null
+++ b/challenge-127/deadmarshal/pascal/ch2.pas
@@ -0,0 +1,36 @@
+program Ch2;
+
+{$mode objfpc}
+uses
+ SysUtils;
+
+type
+ TInterval = record X,Y:Integer; end;
+ TArr = array[0..4] of TInterval;
+
+var
+ A1:TArr = ((X:1;Y:4),(X:3;Y:5),(X:6;Y:8),(X:12;Y:13),(X:3;Y:20));
+ A2:TArr = ((X:3;Y:4),(X:5;Y:7),(X:6;Y:9),(X:10;Y:12),(X:13;Y:15));
+
+procedure ConflictIntervals(var Arr:TArr);
+var
+ I,J:Integer;
+ B:Boolean;
+begin
+ for I := Low(Arr)+1 to High(Arr) do
+ begin
+ B := False;
+ for J := Low(Arr) to I-1 do
+ begin
+ if (Arr[I].X >= Arr[J].X) and (Arr[I].X <= Arr[J].Y) then B := True;
+ end;
+ if B then Write(Format('(%d %d) ',[Arr[I].X,Arr[J].Y]));
+ end;
+ WriteLn;
+end;
+
+begin
+ ConflictIntervals(A1);
+ ConflictIntervals(A2);
+end.
+
diff --git a/challenge-127/deadmarshal/perl/ch-1.pl b/challenge-127/deadmarshal/perl/ch-1.pl
new file mode 100644
index 0000000000..e4bd4433de
--- /dev/null
+++ b/challenge-127/deadmarshal/perl/ch-1.pl
@@ -0,0 +1,15 @@
+#!/usr/bin/env perl
+use strict;
+use warnings;
+use List::Util qw(all);
+
+sub disjoint_sets{
+ my ($s1,$s2) = @_;
+ my %h;
+ map{$h{$s1->[$_]}++; $h{$s2->[$_]}++} 0..$#$s1;
+ all{$_ == 1} values %h;
+}
+
+printf "%d\n", disjoint_sets([1,2,5,3,4],[4,6,7,8,9]);
+printf "%d\n", disjoint_sets([1,3,5,7,9],[0,2,4,6,8]);
+
diff --git a/challenge-127/deadmarshal/perl/ch-2.pl b/challenge-127/deadmarshal/perl/ch-2.pl
new file mode 100644
index 0000000000..c53bf4a07d
--- /dev/null
+++ b/challenge-127/deadmarshal/perl/ch-2.pl
@@ -0,0 +1,22 @@
+#!/usr/bin/env perl
+use strict;
+use warnings;
+use Data::Show;
+
+sub conflict_intervals{
+ my ($arr) = @_;
+ my @ret;
+ foreach my $i(1..$#$arr){
+ my $b = 0;
+ foreach my $j(0..$i-1){
+ $b = 1 if $arr->[$i][0] >= $arr->[$j][0] &&
+ $arr->[$i][0] <= $arr->[$j][1];
+ }
+ push @ret, $arr->[$i] if $b;
+ }
+ @ret
+}
+
+print show conflict_intervals([[1,4],[3,5],[6,8],[12,13],[3,20]]);
+print show conflict_intervals([[3,4],[5,7],[6,9],[10,12],[13,15]]);
+
diff --git a/challenge-127/deadmarshal/raku/ch-1.raku b/challenge-127/deadmarshal/raku/ch-1.raku
new file mode 100644
index 0000000000..41e29c3aa3
--- /dev/null
+++ b/challenge-127/deadmarshal/raku/ch-1.raku
@@ -0,0 +1,10 @@
+#!/usr/bin/env raku
+
+sub disjoint-sets(@arr1,@arr2)
+{
+ !so @arr1 (&) @arr2;
+}
+
+say disjoint-sets([1,2,5,3,4],[4,6,7,8,9]);
+say disjoint-sets([1,3,5,7,9],[0,2,4,6,8]);
+
diff --git a/challenge-127/deadmarshal/raku/ch-2.raku b/challenge-127/deadmarshal/raku/ch-2.raku
new file mode 100644
index 0000000000..a89d68b808
--- /dev/null
+++ b/challenge-127/deadmarshal/raku/ch-2.raku
@@ -0,0 +1,21 @@
+#!/usr/bin/env raku
+
+sub conflict-intervals(@arr)
+{
+ my @ret;
+ for 1..@arr.end -> $i
+ {
+ my $b = False;
+ for 0..^$i -> $j
+ {
+ $b = True if @arr[$i][0] >= @arr[$j][0] &&
+ @arr[$i][0] <= @arr[$j][1];
+ }
+ @ret.push(@arr[$i]) if $b;
+ }
+ @ret;
+}
+
+say conflict-intervals([[1,4],[3,5],[6,8],[12,13],[3,20]]);
+say conflict-intervals([[3,4],[5,7],[6,9],[10,12],[13,15]]);
+
diff --git a/challenge-127/deadmarshal/ruby/ch1.rb b/challenge-127/deadmarshal/ruby/ch1.rb
new file mode 100644
index 0000000000..0078652c4a
--- /dev/null
+++ b/challenge-127/deadmarshal/ruby/ch1.rb
@@ -0,0 +1,14 @@
+#!/usr/bin/env ruby
+
+def disjoint_sets(s1,s2)
+ h = Hash.new(0)
+ (0...s1.length).each do |i|
+ h[s1[i]] += 1
+ h[s2[i]] += 1
+ end
+ h.values.all? {|e| e == 1}
+end
+
+p disjoint_sets([1,2,5,3,4],[4,6,7,8,9])
+p disjoint_sets([1,3,5,7,9],[0,2,4,6,8])
+
diff --git a/challenge-127/deadmarshal/ruby/ch2.rb b/challenge-127/deadmarshal/ruby/ch2.rb
new file mode 100644
index 0000000000..2eb6705031
--- /dev/null
+++ b/challenge-127/deadmarshal/ruby/ch2.rb
@@ -0,0 +1,17 @@
+#!/usr/bin/env ruby
+
+def conflict_intervals(arr)
+ ret = []
+ (1...arr.length).each do |i|
+ b = false
+ (0...i).each do |j|
+ b = true if arr[i][0] >= arr[j][0] and arr[i][0] <= arr[j][1]
+ end
+ ret.push(arr[i]) if b
+ end
+ ret
+end
+
+p conflict_intervals([[1,4],[3,5],[6,8],[12,13],[3,20]])
+p conflict_intervals([[3,4],[5,7],[6,9],[10,12],[13,15]])
+