diff options
| author | deadmarshal <adeadmarshal@gmail.com> | 2023-11-04 19:38:44 +0330 |
|---|---|---|
| committer | deadmarshal <adeadmarshal@gmail.com> | 2023-11-04 19:38:44 +0330 |
| commit | 3c934ca8f0f3d6122863c26dc4d726965a37ed1c (patch) | |
| tree | 97bf9565883b0cd80bdd167511a685b0e92aae9c /challenge-127/deadmarshal | |
| parent | 55f9e24e0fa53f838983f967fafb93745530c6e0 (diff) | |
| download | perlweeklychallenge-club-3c934ca8f0f3d6122863c26dc4d726965a37ed1c.tar.gz perlweeklychallenge-club-3c934ca8f0f3d6122863c26dc4d726965a37ed1c.tar.bz2 perlweeklychallenge-club-3c934ca8f0f3d6122863c26dc4d726965a37ed1c.zip | |
TWC127
Diffstat (limited to 'challenge-127/deadmarshal')
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]]) + |
