aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authordeadmarshal <adeadmarshal@gmail.com>2023-01-10 13:03:07 +0330
committerdeadmarshal <adeadmarshal@gmail.com>2023-01-10 13:03:07 +0330
commit0e3e1a42869013d09eaa4c797cd957539004d944 (patch)
treeb2bd4f49bb2d5dd3eccb3bb8c7bc57575a8787e7
parentb8a1cd65abd85f6cf9df5b9dc5bc34677763b531 (diff)
downloadperlweeklychallenge-club-0e3e1a42869013d09eaa4c797cd957539004d944.tar.gz
perlweeklychallenge-club-0e3e1a42869013d09eaa4c797cd957539004d944.tar.bz2
perlweeklychallenge-club-0e3e1a42869013d09eaa4c797cd957539004d944.zip
TWC199
-rw-r--r--challenge-199/deadmarshal/c/ch-1.c23
-rw-r--r--challenge-199/deadmarshal/c/ch-2.c29
-rw-r--r--challenge-199/deadmarshal/cpp/ch-1.cpp22
-rw-r--r--challenge-199/deadmarshal/cpp/ch-2.cpp28
-rw-r--r--challenge-199/deadmarshal/d/ch1.d21
-rw-r--r--challenge-199/deadmarshal/d/ch2.d24
-rw-r--r--challenge-199/deadmarshal/lua/ch-1.lua17
-rw-r--r--challenge-199/deadmarshal/lua/ch-2.lua22
-rw-r--r--challenge-199/deadmarshal/modula-3/ch1/src/Ch1.m328
-rw-r--r--challenge-199/deadmarshal/modula-3/ch1/src/m3makefile4
-rw-r--r--challenge-199/deadmarshal/modula-3/ch2/src/Ch2.m335
-rw-r--r--challenge-199/deadmarshal/modula-3/ch2/src/m3makefile3
-rw-r--r--challenge-199/deadmarshal/nelua/ch-1.nelua21
-rw-r--r--challenge-199/deadmarshal/nelua/ch-2.nelua28
-rw-r--r--challenge-199/deadmarshal/oberon/Ch1.Mod36
-rw-r--r--challenge-199/deadmarshal/oberon/Ch2.Mod43
-rw-r--r--challenge-199/deadmarshal/pascal/ch1.pas23
-rw-r--r--challenge-199/deadmarshal/pascal/ch2.pas29
-rw-r--r--challenge-199/deadmarshal/perl/ch-1.pl19
-rw-r--r--challenge-199/deadmarshal/perl/ch-2.pl23
-rw-r--r--challenge-199/deadmarshal/raku/ch-1.raku17
-rw-r--r--challenge-199/deadmarshal/raku/ch-2.raku22
22 files changed, 517 insertions, 0 deletions
diff --git a/challenge-199/deadmarshal/c/ch-1.c b/challenge-199/deadmarshal/c/ch-1.c
new file mode 100644
index 0000000000..0bfb0675ee
--- /dev/null
+++ b/challenge-199/deadmarshal/c/ch-1.c
@@ -0,0 +1,23 @@
+#include<stdio.h>
+
+int good_pairs(int *arr, size_t sz)
+{
+ int count = 0;
+ for(size_t i = 0; i < sz; ++i)
+ for(size_t j = i+1; j < sz; ++j)
+ if(arr[i] == arr[j]) count++;
+ return count;
+}
+
+int main(void)
+{
+ int a1[] = {1,2,3,1,1,3};
+ int a2[] = {1,2,3};
+ int a3[] = {1,1,1,1};
+ size_t sz1 = 6, sz2 = 3, sz3 = 4;
+ printf("%d\n", good_pairs(a1,sz1));
+ printf("%d\n", good_pairs(a2,sz2));
+ printf("%d\n", good_pairs(a3,sz3));
+ return 0;
+}
+
diff --git a/challenge-199/deadmarshal/c/ch-2.c b/challenge-199/deadmarshal/c/ch-2.c
new file mode 100644
index 0000000000..84a1935203
--- /dev/null
+++ b/challenge-199/deadmarshal/c/ch-2.c
@@ -0,0 +1,29 @@
+#include<stdio.h>
+#include<stdlib.h>
+
+int good_triplets(int *arr, size_t sz, int x, int y, int z)
+{
+ int count = 0;
+ for(size_t i = 0; i < sz; ++i)
+ for(size_t j = 0; j < sz; ++j)
+ for(size_t k = 0; k < sz; ++k)
+ if((abs(arr[i] - arr[j]) <= x) &&
+ (abs(arr[j] - arr[k]) <= y) &&
+ (abs(arr[i] - arr[k]) <= z) &&
+ (0 <= i) &&
+ (i < j) &&
+ (j < k) &&
+ (k <= sz)) count++;
+ return count;
+}
+
+int main(void)
+{
+ int a1[] = {3,0,1,1,9,7};
+ int a2[] = {1,1,2,2,3};
+ size_t sz1 = 6, sz2 = 5;
+ printf("%d\n", good_triplets(a1,sz1,7,2,3));
+ printf("%d\n", good_triplets(a2,sz2,0,0,1));
+ return 0;
+}
+
diff --git a/challenge-199/deadmarshal/cpp/ch-1.cpp b/challenge-199/deadmarshal/cpp/ch-1.cpp
new file mode 100644
index 0000000000..b5ccda1df0
--- /dev/null
+++ b/challenge-199/deadmarshal/cpp/ch-1.cpp
@@ -0,0 +1,22 @@
+#include<iostream>
+#include<vector>
+
+template<typename T>
+int good_pairs(const std::vector<T> &vec)
+{
+ int count{};
+ for(size_t i = 0; i < vec.size(); ++i)
+ for(size_t j = i+1; j < vec.size(); ++j)
+ if(vec[i] == vec[j]) count++;
+ return count;
+}
+
+int main()
+{
+ std::vector<int> vec1{1,2,3,1,1,3},vec2{1,2,3},vec3{1,1,1,1};
+ std::cout << good_pairs<int>(vec1) << '\n';
+ std::cout << good_pairs<int>(vec2) << '\n';
+ std::cout << good_pairs<int>(vec3) << '\n';
+ return 0;
+}
+
diff --git a/challenge-199/deadmarshal/cpp/ch-2.cpp b/challenge-199/deadmarshal/cpp/ch-2.cpp
new file mode 100644
index 0000000000..cfb5147495
--- /dev/null
+++ b/challenge-199/deadmarshal/cpp/ch-2.cpp
@@ -0,0 +1,28 @@
+#include<iostream>
+#include<vector>
+
+template<typename T>
+int good_triplets(const std::vector<T> &vec, int x, int y, int z)
+{
+ int count{};
+ for(size_t i = 0; i < vec.size(); ++i)
+ for(size_t j = 0; j < vec.size(); ++j)
+ for(size_t k = 0; k < vec.size(); ++k)
+ if((abs(vec[i] - vec[j]) <= x) &&
+ (abs(vec[j] - vec[k]) <= y) &&
+ (abs(vec[i] - vec[k]) <= z) &&
+ (0 <= i) &&
+ (i < j) &&
+ (j < k) &&
+ (k <= vec.size())) count++;
+ return count;
+}
+
+int main()
+{
+ std::vector<int> vec1{3,0,1,1,9,7}, vec2{1,1,2,2,3};
+ std::cout << good_triplets<int>(vec1,7,2,3) << '\n';
+ std::cout << good_triplets<int>(vec2,0,0,1) << '\n';
+ return 0;
+}
+
diff --git a/challenge-199/deadmarshal/d/ch1.d b/challenge-199/deadmarshal/d/ch1.d
new file mode 100644
index 0000000000..1e552b09d5
--- /dev/null
+++ b/challenge-199/deadmarshal/d/ch1.d
@@ -0,0 +1,21 @@
+import std.stdio:writeln;
+
+int good_pairs(int[] arr)
+{
+ int count = 0;
+ for(size_t i = 0; i < arr.length; ++i)
+ for(size_t j = i+1; j < arr.length; ++j)
+ if(arr[i] == arr[j]) count++;
+ return count;
+}
+
+void main()
+{
+ int[] a1 = [1,2,3,1,1,3];
+ int[] a2 = [1,2,3];
+ int[] a3 = [1,1,1,1];
+ writeln(good_pairs(a1));
+ writeln(good_pairs(a2));
+ writeln(good_pairs(a3));
+}
+
diff --git a/challenge-199/deadmarshal/d/ch2.d b/challenge-199/deadmarshal/d/ch2.d
new file mode 100644
index 0000000000..7349828fb5
--- /dev/null
+++ b/challenge-199/deadmarshal/d/ch2.d
@@ -0,0 +1,24 @@
+import std.stdio:writeln;
+import std.math:abs;
+
+int good_pairs(int[] arr, int x, int y, int z)
+{
+ int count = 0;
+ for(size_t i = 0; i < arr.length; ++i)
+ for(size_t j = 0; j < arr.length; ++j)
+ for(size_t k = 0; k < arr.length; ++k)
+ if((abs(arr[i] - arr[j]) <= x) &&
+ (abs(arr[j] - arr[k]) <= y) &&
+ (abs(arr[i] - arr[k]) <= z) &&
+ (0 <= i) &&
+ (i < j) &&
+ (j < k) &&
+ (k <= arr.length)) count++;
+ return count;
+}
+
+void main()
+{
+ writeln(good_pairs([3,0,1,1,9,7],7,2,3));
+ writeln(good_pairs([1,1,2,2,3],0,0,1));
+}
diff --git a/challenge-199/deadmarshal/lua/ch-1.lua b/challenge-199/deadmarshal/lua/ch-1.lua
new file mode 100644
index 0000000000..3d75319798
--- /dev/null
+++ b/challenge-199/deadmarshal/lua/ch-1.lua
@@ -0,0 +1,17 @@
+#!/usr/bin/env lua
+
+local function good_pairs(t)
+ assert(type(t) == 'table','t must be a table!')
+ local count = 0
+ for i=1,#t do
+ for j=i+1,#t do
+ if t[i] == t[j] then count = count + 1 end
+ end
+ end
+ return count
+end
+
+print(good_pairs({1,2,3,1,1,3}))
+print(good_pairs({1,2,3}))
+print(good_pairs({1,1,1,1}))
+
diff --git a/challenge-199/deadmarshal/lua/ch-2.lua b/challenge-199/deadmarshal/lua/ch-2.lua
new file mode 100644
index 0000000000..65de505bb4
--- /dev/null
+++ b/challenge-199/deadmarshal/lua/ch-2.lua
@@ -0,0 +1,22 @@
+#!/usr/bin/env lua
+
+local function good_triplets(t,x,y,z)
+ local count = 0
+ for i=1,#t do
+ for j=1,#t do
+ for k=1,#t do
+ if math.abs(t[i] - t[j]) <= x and
+ math.abs(t[j] - t[k]) <= y and
+ math.abs(t[i] - t[k]) <= z and
+ 0 <= i and i < j and j < k and k <= #t then
+ count = count + 1
+ end
+ end
+ end
+ end
+ return count
+end
+
+print(good_triplets({3,0,1,1,9,7},7,2,3))
+print(good_triplets({1,1,2,2,3},0,0,1))
+
diff --git a/challenge-199/deadmarshal/modula-3/ch1/src/Ch1.m3 b/challenge-199/deadmarshal/modula-3/ch1/src/Ch1.m3
new file mode 100644
index 0000000000..9c8e2f607d
--- /dev/null
+++ b/challenge-199/deadmarshal/modula-3/ch1/src/Ch1.m3
@@ -0,0 +1,28 @@
+MODULE Ch1 EXPORTS Main;
+
+IMPORT IO;
+
+VAR
+ A1:ARRAY[0..5] OF INTEGER := ARRAY OF INTEGER{1,2,3,1,1,3};
+ A2:ARRAY[0..2] OF INTEGER := ARRAY OF INTEGER{1,2,3};
+ A3:ARRAY[0..3] OF INTEGER := ARRAY OF INTEGER{1,1,1,1};
+
+PROCEDURE GoodPairs(VAR Arr:ARRAY OF INTEGER):INTEGER =
+ VAR
+ Count:INTEGER;
+ BEGIN
+ Count := 0;
+ FOR I := FIRST(Arr) TO LAST(Arr) DO
+ FOR J := I+1 TO LAST(Arr) DO
+ IF Arr[I] = Arr[J] THEN INC(Count) END;
+ END
+ END;
+ RETURN Count;
+ END GoodPairs;
+
+BEGIN
+ IO.PutInt(GoodPairs(A1)); IO.Put("\n");
+ IO.PutInt(GoodPairs(A2)); IO.Put("\n");
+ IO.PutInt(GoodPairs(A3)); IO.Put("\n");
+END Ch1.
+
diff --git a/challenge-199/deadmarshal/modula-3/ch1/src/m3makefile b/challenge-199/deadmarshal/modula-3/ch1/src/m3makefile
new file mode 100644
index 0000000000..0ee72d695b
--- /dev/null
+++ b/challenge-199/deadmarshal/modula-3/ch1/src/m3makefile
@@ -0,0 +1,4 @@
+import("libm3")
+implementation("Ch1")
+program("ch1")
+
diff --git a/challenge-199/deadmarshal/modula-3/ch2/src/Ch2.m3 b/challenge-199/deadmarshal/modula-3/ch2/src/Ch2.m3
new file mode 100644
index 0000000000..e128d477b0
--- /dev/null
+++ b/challenge-199/deadmarshal/modula-3/ch2/src/Ch2.m3
@@ -0,0 +1,35 @@
+MODULE Ch2 EXPORTS Main;
+
+IMPORT IO;
+
+VAR
+ A1:ARRAY[0..5] OF INTEGER := ARRAY OF INTEGER{3,0,1,1,9,7};
+ A2:ARRAY[0..4] OF INTEGER := ARRAY OF INTEGER{1,1,2,2,3};
+
+PROCEDURE GoodPairs(VAR A:ARRAY OF INTEGER;X,Y,Z:INTEGER):INTEGER =
+ VAR
+ Count:INTEGER;
+ BEGIN
+ Count := 0;
+ FOR I := FIRST(A) TO LAST(A) DO
+ FOR J := FIRST(A) TO LAST(A) DO
+ FOR K := FIRST(A) TO LAST(A) DO
+ IF((ABS(A[I] - A[J]) <= X) AND
+ ((ABS(A[J] - A[K]) <= Y)) AND
+ ((ABS(A[I] - A[K]) <= Z)) AND
+ (0 <= I) AND
+ (I < J) AND
+ (J < K) AND
+ (K <= NUMBER(A)))
+ THEN INC(Count) END;
+ END;
+ END;
+ END;
+ RETURN Count;
+ END GoodPairs;
+
+BEGIN
+ IO.PutInt(GoodPairs(A1,7,2,3)); IO.Put("\n");
+ IO.PutInt(GoodPairs(A2,0,0,1)); IO.Put("\n");
+END Ch2.
+
diff --git a/challenge-199/deadmarshal/modula-3/ch2/src/m3makefile b/challenge-199/deadmarshal/modula-3/ch2/src/m3makefile
new file mode 100644
index 0000000000..4bfbb7373d
--- /dev/null
+++ b/challenge-199/deadmarshal/modula-3/ch2/src/m3makefile
@@ -0,0 +1,3 @@
+import("libm3")
+implementation("Ch2")
+program("ch2")
diff --git a/challenge-199/deadmarshal/nelua/ch-1.nelua b/challenge-199/deadmarshal/nelua/ch-1.nelua
new file mode 100644
index 0000000000..2622331587
--- /dev/null
+++ b/challenge-199/deadmarshal/nelua/ch-1.nelua
@@ -0,0 +1,21 @@
+#!/usr/bin/env nelua
+
+require'sequence'
+
+local function good_pairs(s:sequence(integer)):integer
+ local count = 0
+ for i=1,#s do
+ for j=i+1,#s do
+ if s[i] == s[j] then count = count + 1 end
+ end
+ end
+ return count
+end
+
+local s1:sequence(integer) = {1,2,3,1,1,3}
+local s2:sequence(integer) = {1,2,3}
+local s3:sequence(integer) = {1,1,1,1}
+print(good_pairs(s1))
+print(good_pairs(s2))
+print(good_pairs(s3))
+
diff --git a/challenge-199/deadmarshal/nelua/ch-2.nelua b/challenge-199/deadmarshal/nelua/ch-2.nelua
new file mode 100644
index 0000000000..85af41c908
--- /dev/null
+++ b/challenge-199/deadmarshal/nelua/ch-2.nelua
@@ -0,0 +1,28 @@
+#!/usr/bin/env nelua
+
+require'sequence'
+require'math'
+
+local function good_triplets(s:sequence(integer),
+ x:integer,y:integer,z:integer):integer
+ local count = 0
+ for i=1,#s do
+ for j=1,#s do
+ for k=1,#s do
+ if math.abs(s[i] - s[j]) <= x and
+ math.abs(s[j] - s[k]) <= y and
+ math.abs(s[i] - s[k]) <= z and
+ 0 <= i and i < j and j < k and k <= #s then
+ count = count + 1
+ end
+ end
+ end
+ end
+ return count
+end
+
+local s1:sequence(integer) = {3,0,1,1,9,7}
+local s2:sequence(integer) = {1,1,2,2,3}
+print(good_triplets(s1,7,2,3))
+print(good_triplets(s2,0,0,1))
+
diff --git a/challenge-199/deadmarshal/oberon/Ch1.Mod b/challenge-199/deadmarshal/oberon/Ch1.Mod
new file mode 100644
index 0000000000..f7c40bb03c
--- /dev/null
+++ b/challenge-199/deadmarshal/oberon/Ch1.Mod
@@ -0,0 +1,36 @@
+MODULE Ch1;
+
+ IMPORT Out;
+
+ VAR
+ A1:ARRAY 6 OF INTEGER;
+ A2:ARRAY 3 OF INTEGER;
+ A3:ARRAY 4 OF INTEGER;
+
+ PROCEDURE Init;
+ BEGIN
+ A1[0] := 1; A1[1] := 2; A1[2] := 3; A1[3] := 1; A1[4] := 1; A1[5] := 3;
+ A2[0] := 1; A2[1] := 2; A2[2] := 3;
+ A3[0] := 1; A3[1] := 1; A3[2] := 1; A3[3] := 1;
+ END Init;
+
+ PROCEDURE GoodPairs(VAR Arr:ARRAY OF INTEGER):LONGINT;
+ VAR
+ I,J,Count:LONGINT;
+ BEGIN
+ Count := 0;
+ FOR I := 0 TO LEN(Arr)-1 DO
+ FOR J := I+1 TO LEN(Arr)-1 DO
+ IF Arr[I] = Arr[J] THEN INC(Count) END;
+ END
+ END;
+ RETURN Count;
+ END GoodPairs;
+
+BEGIN
+ Init;
+ Out.Int(GoodPairs(A1),0); Out.Ln;
+ Out.Int(GoodPairs(A2),0); Out.Ln;
+ Out.Int(GoodPairs(A3),0); Out.Ln;
+END Ch1.
+
diff --git a/challenge-199/deadmarshal/oberon/Ch2.Mod b/challenge-199/deadmarshal/oberon/Ch2.Mod
new file mode 100644
index 0000000000..b52db76154
--- /dev/null
+++ b/challenge-199/deadmarshal/oberon/Ch2.Mod
@@ -0,0 +1,43 @@
+MODULE Ch2;
+
+ IMPORT Out;
+
+ VAR
+ A1:ARRAY 6 OF INTEGER;
+ A2:ARRAY 5 OF INTEGER;
+
+ PROCEDURE Init;
+ BEGIN
+ A1[0] := 3; A1[1] := 0; A1[2] := 1; A1[3] := 1; A1[4] := 9; A1[5] := 7;
+ A2[0] := 1; A2[1] := 1; A2[2] := 2; A2[3] := 2; A2[4] := 3;
+ END Init;
+
+ PROCEDURE GoodPairs(VAR A:ARRAY OF INTEGER;X,Y,Z:INTEGER):INTEGER;
+ VAR
+ I,J,K:LONGINT;
+ Count:INTEGER;
+ BEGIN
+ Count := 0;
+ FOR I := 0 TO LEN(A)-1 DO
+ FOR J := 0 TO LEN(A)-1 DO
+ FOR K := 0 TO LEN(A)-1 DO
+ IF((ABS(A[I] - A[J]) <= X) &
+ ((ABS(A[J] - A[K]) <= Y)) &
+ ((ABS(A[I] - A[K]) <= Z)) &
+ (0 <= I) &
+ (I < J) &
+ (J < K) &
+ (K <= LEN(A)))
+ THEN INC(Count) END;
+ END;
+ END;
+ END;
+ RETURN Count;
+ END GoodPairs;
+
+BEGIN
+ Init;
+ Out.Int(GoodPairs(A1,7,2,3),0); Out.Ln;
+ Out.Int(GoodPairs(A2,0,0,1),0); Out.Ln;
+END Ch2.
+
diff --git a/challenge-199/deadmarshal/pascal/ch1.pas b/challenge-199/deadmarshal/pascal/ch1.pas
new file mode 100644
index 0000000000..d028abdd5a
--- /dev/null
+++ b/challenge-199/deadmarshal/pascal/ch1.pas
@@ -0,0 +1,23 @@
+program Ch1;
+
+{$mode objfpc}
+
+uses
+ SysUtils,Types;
+
+function GoodPairs(Arr:TIntegerDynArray):Integer;
+var
+ I,J:Integer;
+begin
+ Result := 0;
+ for I := Low(Arr) to High(Arr) do
+ for J := I+1 to High(Arr) do
+ if Arr[I] = Arr[J] then Inc(Result);
+end;
+
+begin
+ WriteLn(GoodPairs([1,2,3,1,1,3]));
+ WriteLn(GoodPairs([1,2,3]));
+ WriteLn(GoodPairs([1,1,1,1]));
+end.
+
diff --git a/challenge-199/deadmarshal/pascal/ch2.pas b/challenge-199/deadmarshal/pascal/ch2.pas
new file mode 100644
index 0000000000..744f4670af
--- /dev/null
+++ b/challenge-199/deadmarshal/pascal/ch2.pas
@@ -0,0 +1,29 @@
+program Ch2;
+
+{$mode objfpc}
+
+uses
+ SysUtils,Types;
+
+function GoodTriplets(A:TIntegerDynArray;X,Y,Z:Integer):Integer;
+var
+ I,J,K:Integer;
+begin
+ Result := 0;
+ for I := Low(A) to High(A) do
+ for J := Low(A) to High(A) do
+ for K := Low(A) to High(A) do
+ if((Abs(A[I] - A[J]) <= X) and
+ (Abs(A[J] - A[K]) <= Y) and
+ (Abs(A[I] - A[K]) <= Z) and
+ (0 <= I) and
+ (I < J) and
+ (J < K) and
+ (K <= Length(A))) then Inc(Result);
+end;
+
+begin
+ WriteLn(GoodTriplets([3,0,1,1,9,7],7,2,3));
+ WriteLn(GoodTriplets([1,1,2,2,3],0,0,1));
+end.
+
diff --git a/challenge-199/deadmarshal/perl/ch-1.pl b/challenge-199/deadmarshal/perl/ch-1.pl
new file mode 100644
index 0000000000..243d686c2b
--- /dev/null
+++ b/challenge-199/deadmarshal/perl/ch-1.pl
@@ -0,0 +1,19 @@
+#!/usr/bin/env perl
+use strict;
+use warnings;
+
+sub good_pairs{
+ my ($arr) = @_;
+ my $count = 0;
+ for(my $i = 0; $i < @$arr; ++$i){
+ for(my $j = $i+1; $j < @$arr; ++$j){
+ $count++ if($arr->[$i] == $arr->[$j]);
+ }
+ }
+ $count;
+}
+
+printf "%d\n", good_pairs([1,2,3,1,1,3]);
+printf "%d\n", good_pairs([1,2,3]);
+printf "%d\n", good_pairs([1,1,1,1]);
+
diff --git a/challenge-199/deadmarshal/perl/ch-2.pl b/challenge-199/deadmarshal/perl/ch-2.pl
new file mode 100644
index 0000000000..c315e55a20
--- /dev/null
+++ b/challenge-199/deadmarshal/perl/ch-2.pl
@@ -0,0 +1,23 @@
+#!/usr/bin/env perl
+use strict;
+use warnings;
+
+sub good_triplets{
+ my ($A,$x,$y,$z) = @_;
+ my $count = 0;
+ for(my $i = 0; $i < @$A; ++$i){
+ for(my $j = 0; $j < @$A; ++$j){
+ for(my $k = 0; $k < @$A; ++$k){
+ if((abs($A->[$i] - $A->[$j]) <= $x) &&
+ (abs($A->[$j] - $A->[$k]) <= $y) &&
+ (abs($A->[$i] - $A->[$k]) <= $z) &&
+ (0 <= $i < $j < $k <= @$A)){$count++}
+ }
+ }
+ }
+ $count;
+}
+
+printf "%d\n", good_triplets([3,0,1,1,9,7],7,2,3);
+printf "%d\n", good_triplets([1,1,2,2,3],0,0,1);
+
diff --git a/challenge-199/deadmarshal/raku/ch-1.raku b/challenge-199/deadmarshal/raku/ch-1.raku
new file mode 100644
index 0000000000..5aefd30874
--- /dev/null
+++ b/challenge-199/deadmarshal/raku/ch-1.raku
@@ -0,0 +1,17 @@
+sub good-pairs(@arr)
+{
+ my $count = 0;
+ for 0..@arr.end -> $i
+ {
+ for $i+1..@arr.end -> $j
+ {
+ $count++ if (@arr[$i] == @arr[$j]);
+ }
+ }
+ $count;
+}
+
+say good-pairs([1,2,3,1,1,3]);
+say good-pairs([1,2,3]);
+say good-pairs([1,1,1,1]);
+
diff --git a/challenge-199/deadmarshal/raku/ch-2.raku b/challenge-199/deadmarshal/raku/ch-2.raku
new file mode 100644
index 0000000000..df0d4615f7
--- /dev/null
+++ b/challenge-199/deadmarshal/raku/ch-2.raku
@@ -0,0 +1,22 @@
+sub good-triplets(@A,$x,$y,$z)
+{
+ my $count = 0;
+ for 0..@A.end -> $i
+ {
+ for 0..@A.end -> $j
+ {
+ for 0..@A.end -> $k
+ {
+ if ((abs(@A[$i] - @A[$j]) <= $x) &&
+ (abs(@A[$j] - @A[$k]) <= $y) &&
+ (abs(@A[$i] - @A[$k]) <= $z) &&
+ (0 <= $i < $j < $k <= @A.elems)) {$count++}
+ }
+ }
+ }
+ $count;
+}
+
+say good-triplets([3,0,1,1,9,7],7,2,3);
+say good-triplets([1,1,2,2,3],0,0,1);
+