aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMohammad Sajid Anwar <Mohammad.Anwar@yahoo.com>2023-10-31 16:54:36 +0000
committerGitHub <noreply@github.com>2023-10-31 16:54:36 +0000
commitd2ef9440689255b9fe57a455de7e529846fed45c (patch)
treeb1a229f31c2286ac411a72d54c48e0b20fee9fe5
parent20df36597d5f3d39e39328cabd0dfae7b5b78640 (diff)
parent9f16c0d2f1112b95df5092baa8675f4aeced3759 (diff)
downloadperlweeklychallenge-club-d2ef9440689255b9fe57a455de7e529846fed45c.tar.gz
perlweeklychallenge-club-d2ef9440689255b9fe57a455de7e529846fed45c.tar.bz2
perlweeklychallenge-club-d2ef9440689255b9fe57a455de7e529846fed45c.zip
Merge pull request #8982 from deadmarshal/TWC241
TWC241
-rw-r--r--challenge-241/deadmarshal/blog.txt1
-rw-r--r--challenge-241/deadmarshal/c/ch-1.c30
-rw-r--r--challenge-241/deadmarshal/c/ch-2.c41
-rw-r--r--challenge-241/deadmarshal/cpp/ch-1.cpp30
-rw-r--r--challenge-241/deadmarshal/cpp/ch-2.cpp48
-rw-r--r--challenge-241/deadmarshal/java/Ch1.java28
-rw-r--r--challenge-241/deadmarshal/java/Ch2.java35
-rw-r--r--challenge-241/deadmarshal/lua/ch-1.lua19
-rw-r--r--challenge-241/deadmarshal/lua/ch-2.lua21
-rw-r--r--challenge-241/deadmarshal/modula3/ch1/src/Ch1.m326
-rw-r--r--challenge-241/deadmarshal/modula3/ch1/src/m3makefile4
-rw-r--r--challenge-241/deadmarshal/modula3/ch2/src/Ch2.m365
-rw-r--r--challenge-241/deadmarshal/modula3/ch2/src/m3makefile4
-rw-r--r--challenge-241/deadmarshal/oberon/Ch1.Mod33
-rw-r--r--challenge-241/deadmarshal/oberon/Ch2.Mod67
-rw-r--r--challenge-241/deadmarshal/pascal/ch1.pas28
-rw-r--r--challenge-241/deadmarshal/pascal/ch2.pas70
-rw-r--r--challenge-241/deadmarshal/perl/ch-1.pl17
-rw-r--r--challenge-241/deadmarshal/perl/ch-2.pl11
-rw-r--r--challenge-241/deadmarshal/raku/ch-1.raku15
-rw-r--r--challenge-241/deadmarshal/raku/ch-2.raku12
21 files changed, 605 insertions, 0 deletions
diff --git a/challenge-241/deadmarshal/blog.txt b/challenge-241/deadmarshal/blog.txt
new file mode 100644
index 0000000000..6ff104fedb
--- /dev/null
+++ b/challenge-241/deadmarshal/blog.txt
@@ -0,0 +1 @@
+https://deadmarshal.blogspot.com/2023/10/twc241.html
diff --git a/challenge-241/deadmarshal/c/ch-1.c b/challenge-241/deadmarshal/c/ch-1.c
new file mode 100644
index 0000000000..85f6b3b00d
--- /dev/null
+++ b/challenge-241/deadmarshal/c/ch-1.c
@@ -0,0 +1,30 @@
+#include<stdio.h>
+
+size_t arithmetic_triplets(int *arr,size_t sz,int diff)
+{
+ size_t count = 0;
+ for(size_t i = 0; i < sz; ++i)
+ {
+ for(size_t j = i+1; j < sz; ++j)
+ {
+ for(size_t k = j+1; k < sz; ++k)
+ {
+ if((arr[j] - arr[i] == diff) && (arr[k] - arr[j] == diff))
+ count++;
+ }
+ }
+ }
+ return count;
+}
+
+int main(void)
+{
+ int arr1[] = {0,1,4,6,7,10};
+ int arr2[] = {4,5,6,7,8,9};
+ size_t sz1 = sizeof(arr1)/sizeof(*arr1);
+ size_t sz2 = sizeof(arr2)/sizeof(*arr2);
+ printf("%d\n", arithmetic_triplets(arr1,sz1,3));
+ printf("%d\n", arithmetic_triplets(arr2,sz2,2));
+ return 0;
+}
+
diff --git a/challenge-241/deadmarshal/c/ch-2.c b/challenge-241/deadmarshal/c/ch-2.c
new file mode 100644
index 0000000000..b7de46a9fc
--- /dev/null
+++ b/challenge-241/deadmarshal/c/ch-2.c
@@ -0,0 +1,41 @@
+#include<stdio.h>
+#include<stdlib.h>
+
+size_t count_factors(int n)
+{
+ size_t count = 0;
+ int c = 2;
+ while(n > 1)
+ {
+ if(n % c == 0)
+ {
+ n /= c;
+ count++;
+ }
+ else c++;
+ }
+ return count;
+}
+
+int compare(const void *a, const void *b)
+{
+ size_t fa = count_factors(*(int*)a);
+ size_t fb = count_factors(*(int*)b);
+ return fa == fb ? a - b : fa - fb;
+}
+
+void prime_order(int *arr,size_t sz)
+{
+ qsort(arr,sz,sizeof(*arr),compare);
+}
+
+int main(void)
+{
+ int arr[] = {11,8,27,4};
+ size_t sz = sizeof(arr)/sizeof(*arr);
+ prime_order(arr,sz);
+ for(size_t i = 0; i < sz; ++i) printf("%d ",arr[i]);
+ puts("");
+ return 0;
+}
+
diff --git a/challenge-241/deadmarshal/cpp/ch-1.cpp b/challenge-241/deadmarshal/cpp/ch-1.cpp
new file mode 100644
index 0000000000..54f493de8c
--- /dev/null
+++ b/challenge-241/deadmarshal/cpp/ch-1.cpp
@@ -0,0 +1,30 @@
+#include<iostream>
+#include<vector>
+
+template<typename T>
+size_t arithmetic_triplets(const std::vector<T> &vec,T diff)
+{
+ size_t count{};
+ for(size_t i = 0; i < vec.size(); ++i)
+ {
+ for(size_t j = i+1; j < vec.size(); ++j)
+ {
+ for(size_t k = j+1; k < vec.size(); ++k)
+ {
+ if((vec.at(j) - vec.at(i) == diff) &&
+ (vec.at(k) - vec.at(j) == diff))
+ count++;
+ }
+ }
+ }
+ return count;
+}
+
+int main(void)
+{
+ std::vector<int> vec1{0,1,4,6,7,10},vec2{4,5,6,7,8,9};
+ std::cout << arithmetic_triplets<int>(vec1,3) << '\n'
+ << arithmetic_triplets<int>(vec2,2) << '\n';
+ return 0;
+}
+
diff --git a/challenge-241/deadmarshal/cpp/ch-2.cpp b/challenge-241/deadmarshal/cpp/ch-2.cpp
new file mode 100644
index 0000000000..b53ab789cb
--- /dev/null
+++ b/challenge-241/deadmarshal/cpp/ch-2.cpp
@@ -0,0 +1,48 @@
+#include<iostream>
+#include<vector>
+#include<algorithm>
+
+template<typename T>
+size_t count_factors(T n)
+{
+ size_t count{};
+ T c = 2;
+ while(n > 1)
+ {
+ if(n % c == 0)
+ {
+ n /= c;
+ count++;
+ }
+ else c++;
+ }
+ return count;
+}
+
+template<typename T>
+void prime_order(std::vector<T> &vec)
+{
+ std::sort(vec.begin(),vec.end(),[&](T a, T b){
+ size_t fa = count_factors<T>(a);
+ size_t fb = count_factors<T>(b);
+ return fa == fb ? a < b : fa < fb;
+ });
+}
+
+template<typename T>
+std::ostream &operator<<(std::ostream &os,
+ const std::vector<T>& vec)
+{
+ for(const auto &e : vec) os << e << ' ';
+ os << "\n";
+ return os;
+}
+
+int main()
+{
+ std::vector<int> vec{11,8,27,4};
+ prime_order<int>(vec);
+ std::cout << vec;
+ return 0;
+}
+
diff --git a/challenge-241/deadmarshal/java/Ch1.java b/challenge-241/deadmarshal/java/Ch1.java
new file mode 100644
index 0000000000..f4ae47bca6
--- /dev/null
+++ b/challenge-241/deadmarshal/java/Ch1.java
@@ -0,0 +1,28 @@
+import java.util.ArrayList;
+import java.util.List;
+
+public class Ch1 {
+ public static void main(String[] args) {
+ ArrayList<Integer> list1 =
+ new ArrayList<>(List.of(0,1,4,6,7,10));
+ ArrayList<Integer> list2 =
+ new ArrayList<>(List.of(4,5,6,7,8,9));
+ System.out.println(arithmetic_triplets(list1,3));
+ System.out.println(arithmetic_triplets(list2,2));
+ }
+
+ private static int arithmetic_triplets(List<Integer> list,int diff){
+ int count = 0;
+ for(int i = 0; i < list.size(); ++i) {
+ for(int j = i+1; j < list.size(); ++j) {
+ for(int k = j+1; k < list.size(); ++k) {
+ if((list.get(j) - list.get(i) == diff) &&
+ (list.get(k) - list.get(j) == diff))
+ count++;
+ }
+ }
+ }
+ return count;
+ }
+}
+
diff --git a/challenge-241/deadmarshal/java/Ch2.java b/challenge-241/deadmarshal/java/Ch2.java
new file mode 100644
index 0000000000..e810fe1429
--- /dev/null
+++ b/challenge-241/deadmarshal/java/Ch2.java
@@ -0,0 +1,35 @@
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Comparator;
+
+public class Ch2 {
+ public static void main(String[] args) {
+ ArrayList<Integer> list = new ArrayList<>(List.of(11,8,27,4));
+ prime_order(list);
+ System.out.println(list);
+ }
+
+ private static int count_factors(int n) {
+ int c = 2,count = 0;
+ while(n > 1) {
+ if(n % c == 0) {
+ n /= c;
+ count++;
+ }
+ else c++;
+ }
+ return count;
+ }
+
+ private static void prime_order(List<Integer> list) {
+ list.sort(new Comparator<Integer>() {
+ @Override
+ public int compare(Integer a, Integer b) {
+ int fa = count_factors(a);
+ int fb = count_factors(b);
+ return fa == fb ? Integer.compare(a,b) :
+ Integer.compare(fa,fb);
+ }});
+ }
+}
+
diff --git a/challenge-241/deadmarshal/lua/ch-1.lua b/challenge-241/deadmarshal/lua/ch-1.lua
new file mode 100644
index 0000000000..a63054cda6
--- /dev/null
+++ b/challenge-241/deadmarshal/lua/ch-1.lua
@@ -0,0 +1,19 @@
+#!/usr/bin/env lua
+
+local function arithmetic_triplets(t,diff)
+ local count = 0
+ for i=1,#t do
+ for j=i+1,#t do
+ for k=j+1,#t do
+ if t[j] - t[i] == diff and t[k] - t[j] == diff then
+ count = count + 1
+ end
+ end
+ end
+ end
+ return count
+end
+
+print(arithmetic_triplets({0,1,4,6,7,10},3))
+print(arithmetic_triplets({4,5,6,7,8,9},2))
+
diff --git a/challenge-241/deadmarshal/lua/ch-2.lua b/challenge-241/deadmarshal/lua/ch-2.lua
new file mode 100644
index 0000000000..53e21976d0
--- /dev/null
+++ b/challenge-241/deadmarshal/lua/ch-2.lua
@@ -0,0 +1,21 @@
+#!/usr/bin/env lua
+
+local function count_factors(n)
+ local c,count = 2,0
+ while n > 1 do
+ if n % c == 0 then n = n // c count = count + 1 else c = c + 1 end
+ end
+ return count
+end
+
+local function prime_order(t)
+ assert(type(t) == 'table','t must be a table!')
+ table.sort(t,function(a,b)
+ local fa,fb = count_factors(a),count_factors(b)
+ return fa == fb and a < b or fa < fb
+ end)
+ return table.concat(t,',')
+end
+
+print(prime_order{11,8,27,4})
+
diff --git a/challenge-241/deadmarshal/modula3/ch1/src/Ch1.m3 b/challenge-241/deadmarshal/modula3/ch1/src/Ch1.m3
new file mode 100644
index 0000000000..1f7bc4bba0
--- /dev/null
+++ b/challenge-241/deadmarshal/modula3/ch1/src/Ch1.m3
@@ -0,0 +1,26 @@
+MODULE Ch1 EXPORTS Main;
+
+IMPORT IO;
+
+VAR
+ A1:ARRAY[0..5] OF INTEGER := ARRAY OF INTEGER{0,1,4,6,7,10};
+ A2:ARRAY[0..5] OF INTEGER := ARRAY OF INTEGER{4,5,6,7,8,9};
+
+PROCEDURE ArithmeticTriplets(VAR A:ARRAY OF INTEGER;Diff:INTEGER):INTEGER =
+ VAR Count:INTEGER := 0;
+ BEGIN
+ FOR I := FIRST(A) TO LAST(A) DO
+ FOR J := I+1 TO LAST(A) DO
+ FOR K := J+1 TO LAST(A) DO
+ IF (A[J] - A[I] = Diff) AND (A[K] - A[J] = Diff) THEN INC(Count) END
+ END
+ END
+ END;
+ RETURN Count
+ END ArithmeticTriplets;
+
+BEGIN
+ IO.PutInt(ArithmeticTriplets(A1,3)); IO.Put("\n");
+ IO.PutInt(ArithmeticTriplets(A2,2)); IO.Put("\n");
+END Ch1.
+
diff --git a/challenge-241/deadmarshal/modula3/ch1/src/m3makefile b/challenge-241/deadmarshal/modula3/ch1/src/m3makefile
new file mode 100644
index 0000000000..0ee72d695b
--- /dev/null
+++ b/challenge-241/deadmarshal/modula3/ch1/src/m3makefile
@@ -0,0 +1,4 @@
+import("libm3")
+implementation("Ch1")
+program("ch1")
+
diff --git a/challenge-241/deadmarshal/modula3/ch2/src/Ch2.m3 b/challenge-241/deadmarshal/modula3/ch2/src/Ch2.m3
new file mode 100644
index 0000000000..73dc495d62
--- /dev/null
+++ b/challenge-241/deadmarshal/modula3/ch2/src/Ch2.m3
@@ -0,0 +1,65 @@
+MODULE Ch2 EXPORTS Main;
+
+IMPORT IO;
+
+TYPE
+ TProc = PROCEDURE(A,B:INTEGER):INTEGER;
+
+VAR
+ A1:ARRAY[0..3] OF INTEGER := ARRAY OF INTEGER{11,8,27,4};
+
+PROCEDURE QuickSort(VAR A:ARRAY OF INTEGER;
+ Left,Right:INTEGER;
+ Compare:TProc) =
+ VAR
+ I,J,Pivot,Temp:INTEGER;
+ BEGIN
+ I := Left; J := Right;
+ Pivot := A[(Left + Right) DIV 2];
+ REPEAT
+ WHILE Compare(Pivot,A[I]) > 0 DO INC(I) END;
+ WHILE Compare(Pivot,A[J]) < 0 DO DEC(J) END;
+ IF I <= J THEN
+ Temp := A[I]; A[I] := A[J]; A[J] := Temp;
+ INC(I); DEC(J)
+ END
+ UNTIL I > J;
+ IF Left < J THEN QuickSort(A,Left,J,Compare) END;
+ IF I < Right THEN QuickSort(A,I,Right,Compare) END;
+ END QuickSort;
+
+PROCEDURE CountFactors(N:INTEGER):INTEGER =
+ VAR C,Count:INTEGER;
+ BEGIN
+ Count := 0; C := 2;
+ WHILE N > 1 DO
+ IF N MOD C = 0 THEN N := N DIV C; INC(Count) ELSE INC(C) END
+ END;
+ RETURN Count
+ END CountFactors;
+
+PROCEDURE Compare(A,B:INTEGER):INTEGER =
+ VAR
+ Fa,Fb:INTEGER;
+ BEGIN
+ Fa := CountFactors(A);
+ Fb := CountFactors(B);
+ IF Fa - Fb = 0 THEN RETURN A - B ELSE RETURN Fa - Fb END
+ END Compare;
+
+PROCEDURE PrimeOrder(VAR A:ARRAY OF INTEGER) =
+ BEGIN
+ QuickSort(A,FIRST(A),LAST(A),Compare)
+ END PrimeOrder;
+
+PROCEDURE PrintArray(VAR A:ARRAY OF INTEGER) =
+ BEGIN
+ FOR I := FIRST(A) TO LAST(A) DO IO.PutInt(A[I]); IO.PutChar(' ') END;
+ IO.Put("\n")
+ END PrintArray;
+
+BEGIN
+ PrimeOrder(A1);
+ PrintArray(A1)
+END Ch2.
+
diff --git a/challenge-241/deadmarshal/modula3/ch2/src/m3makefile b/challenge-241/deadmarshal/modula3/ch2/src/m3makefile
new file mode 100644
index 0000000000..5c32bbc4bb
--- /dev/null
+++ b/challenge-241/deadmarshal/modula3/ch2/src/m3makefile
@@ -0,0 +1,4 @@
+import("libm3")
+implementation("Ch2")
+program("ch2")
+
diff --git a/challenge-241/deadmarshal/oberon/Ch1.Mod b/challenge-241/deadmarshal/oberon/Ch1.Mod
new file mode 100644
index 0000000000..bc50703c13
--- /dev/null
+++ b/challenge-241/deadmarshal/oberon/Ch1.Mod
@@ -0,0 +1,33 @@
+MODULE Ch1;
+
+ IMPORT Out;
+
+ VAR
+ A1,A2:ARRAY 6 OF LONGINT;
+
+ PROCEDURE Init;
+ BEGIN
+ A1[0] := 0; A1[1] := 1; A1[2] := 4; A1[3] := 6; A1[4] := 7; A1[5] := 10;
+ A2[0] := 4; A2[1] := 5; A2[2] := 6; A2[3] := 7; A2[4] := 8; A2[5] := 9;
+ END Init;
+
+ PROCEDURE ArithmeticTriplets(VAR arr:ARRAY OF LONGINT;diff:LONGINT):LONGINT;
+ VAR i,j,k,count:LONGINT;
+ BEGIN
+ count := 0;
+ FOR i := 0 TO LEN(arr)-1 DO
+ FOR j := i+1 TO LEN(arr)-1 DO
+ FOR k := j+1 TO LEN(arr)-1 DO
+ IF (arr[j] - arr[i] = diff) & (arr[k] - arr[j] = diff) THEN INC(count) END
+ END
+ END
+ END;
+ RETURN count
+ END ArithmeticTriplets;
+
+BEGIN
+ Init;
+ Out.Int(ArithmeticTriplets(A1,3),0); Out.Ln;
+ Out.Int(ArithmeticTriplets(A2,2),0); Out.Ln;
+END Ch1.
+
diff --git a/challenge-241/deadmarshal/oberon/Ch2.Mod b/challenge-241/deadmarshal/oberon/Ch2.Mod
new file mode 100644
index 0000000000..34b1e1d03a
--- /dev/null
+++ b/challenge-241/deadmarshal/oberon/Ch2.Mod
@@ -0,0 +1,67 @@
+MODULE Ch2;
+
+ IMPORT Out;
+
+ TYPE
+ TProc = PROCEDURE(a,b:LONGINT):LONGINT;
+
+ VAR
+ A1:ARRAY 4 OF LONGINT;
+
+ PROCEDURE Init;
+ BEGIN
+ A1[0] := 11; A1[1] := 8; A1[2] := 27; A1[3] := 4;
+ END Init;
+
+ PROCEDURE QuickSort(VAR arr:ARRAY OF LONGINT;left,right:LONGINT;comp:TProc);
+ VAR i,j,pivot,temp:LONGINT;
+ BEGIN
+ i := left; j := right;
+ pivot := arr[(left + right) DIV 2];
+ REPEAT
+ WHILE comp(pivot,arr[i]) > 0 DO INC(i) END;
+ WHILE comp(pivot,arr[j]) < 0 DO DEC(j) END;
+ IF i <= j THEN
+ temp := arr[i]; arr[i] := arr[j]; arr[j] := temp;
+ INC(i); DEC(j);
+ END;
+ UNTIL i > j;
+ IF left < j THEN QuickSort(arr,left,j,comp) END;
+ IF i < right THEN QuickSort(arr,i,right,comp) END;
+ END QuickSort;
+
+ PROCEDURE CountFactors(n:LONGINT):LONGINT;
+ VAR c,count:LONGINT;
+ BEGIN
+ count := 0; c := 2;
+ WHILE n > 1 DO
+ IF n MOD c = 0 THEN n := n DIV c; INC(count) ELSE INC(c) END
+ END;
+ RETURN count
+ END CountFactors;
+
+ PROCEDURE compare(a,b:LONGINT):LONGINT;
+ VAR fa,fb:LONGINT;
+ BEGIN
+ fa := CountFactors(a);
+ fb := CountFactors(b);
+ IF fa - fb = 0 THEN RETURN a - b ELSE RETURN fa - fb END
+ END compare;
+
+ PROCEDURE PrimeOrder(VAR arr:ARRAY OF LONGINT);
+ BEGIN
+ QuickSort(arr,0,LEN(arr)-1,compare);
+ END PrimeOrder;
+
+ PROCEDURE PrintArray(VAR arr:ARRAY OF LONGINT);
+ VAR i:LONGINT;
+ BEGIN
+ FOR i := 0 TO LEN(arr)-1 DO Out.Int(arr[i],0); Out.Char(' ') END; Out.Ln
+ END PrintArray;
+
+BEGIN
+ Init;
+ PrimeOrder(A1);
+ PrintArray(A1);
+END Ch2.
+
diff --git a/challenge-241/deadmarshal/pascal/ch1.pas b/challenge-241/deadmarshal/pascal/ch1.pas
new file mode 100644
index 0000000000..d3b3b53761
--- /dev/null
+++ b/challenge-241/deadmarshal/pascal/ch1.pas
@@ -0,0 +1,28 @@
+program Ch1;
+
+{$mode objfpc}
+uses
+ SysUtils,Types;
+
+var
+ A1,A2:TIntegerDynArray;
+
+function ArithmeticTriplets(var Arr:TIntegerDynArray;
+ Diff:Integer):Integer;
+var I,J,K:Integer;
+begin
+ Result := 0;
+ for I := Low(Arr) to High(Arr) do
+ for J := I+1 to High(Arr) do
+ for K := J+1 to High(Arr) do
+ if (Arr[J] - Arr[I] = Diff) and (Arr[K] - Arr[J] = Diff) then
+ Inc(Result);
+end;
+
+begin
+ A1 := [0,1,4,6,7,10];
+ A2 := [4,5,6,7,8,9];
+ WriteLn(ArithmeticTriplets(A1,3));
+ WriteLn(ArithmeticTriplets(A2,2));
+end.
+
diff --git a/challenge-241/deadmarshal/pascal/ch2.pas b/challenge-241/deadmarshal/pascal/ch2.pas
new file mode 100644
index 0000000000..9968533862
--- /dev/null
+++ b/challenge-241/deadmarshal/pascal/ch2.pas
@@ -0,0 +1,70 @@
+program Ch2;
+
+{$mode objfpc}
+uses
+ SysUtils,Types;
+
+type
+ TProc = function(A,B:Integer):Integer;
+
+var
+ I:Integer;
+ A1:TIntegerDynArray;
+
+procedure QuickSort(var A:TIntegerDynArray;
+ Left,Right:Integer;
+ Comp:TProc);
+var
+ I,J:Integer;
+ Pivot,Temp:Integer;
+begin
+ I := Left;
+ J := Right;
+ Pivot := A[(Left + Right) div 2];
+ repeat
+ while Comp(Pivot,A[I]) > 0 do Inc(I);
+ while Comp(Pivot,A[J]) < 0 do Dec(J);
+ if I <= J then
+ begin
+ Temp := A[I];
+ A[I] := A[J];
+ A[J] := Temp;
+ Inc(I);
+ Dec(J);
+ end;
+ until I > J;
+ if Left < J then QuickSort(A,Left,J,Comp);
+ if I < Right then QuickSort(A,I,Right,Comp);
+end;
+
+function CountFactors(N:Integer):Integer;
+var C:Integer = 2;
+begin
+ Result := 0;
+ while N > 1 do
+ begin
+ if N mod C = 0 then begin N := N div C; Inc(Result) end
+ else Inc(C)
+ end;
+end;
+
+function Compare(A,B:Integer):Integer;
+var Fa,Fb:Integer;
+begin
+ Fa := CountFactors(A);
+ Fb := CountFactors(B);
+ if Fa - Fb = 0 then Result := A - B else Result := Fa - Fb;
+end;
+
+procedure PrimeOrder(var Arr:TIntegerDynArray);
+begin
+ QuickSort(Arr,Low(Arr),High(Arr),@Compare);
+end;
+
+begin
+ A1 := [11,8,27,4];
+ PrimeOrder(A1);
+ for I := Low(A1) to High(A1) do Write(A1[I],' ');
+ WriteLn
+end.
+
diff --git a/challenge-241/deadmarshal/perl/ch-1.pl b/challenge-241/deadmarshal/perl/ch-1.pl
new file mode 100644
index 0000000000..aae921ba67
--- /dev/null
+++ b/challenge-241/deadmarshal/perl/ch-1.pl
@@ -0,0 +1,17 @@
+#!/usr/bin/env perl
+use strict;
+use warnings;
+use Algorithm::Combinatorics qw(combinations);
+
+sub arithmetic_triplets{
+ my $count = 0;
+ my $iter = combinations($_[0],3);
+ while(my $c = $iter->next){
+ $count++ if($c->[1] - $c->[0]) == $_[1] == ($c->[2] - $c->[1]);
+ }
+ $count
+}
+
+printf "%d\n", arithmetic_triplets([0,1,4,6,7,10],3);
+printf "%d\n", arithmetic_triplets([4,5,6,7,8,9],2);
+
diff --git a/challenge-241/deadmarshal/perl/ch-2.pl b/challenge-241/deadmarshal/perl/ch-2.pl
new file mode 100644
index 0000000000..3268747738
--- /dev/null
+++ b/challenge-241/deadmarshal/perl/ch-2.pl
@@ -0,0 +1,11 @@
+#!/usr/bin/env perl
+use strict;
+use warnings;
+use ntheory qw(factor);
+
+sub prime_order{
+ sort{factor($a) <=> factor($b) || $a <=> $b} @{$_[0]};
+}
+
+printf "(%s)\n", join ',',prime_order([11,8,27,4]);
+
diff --git a/challenge-241/deadmarshal/raku/ch-1.raku b/challenge-241/deadmarshal/raku/ch-1.raku
new file mode 100644
index 0000000000..2e1fa754c4
--- /dev/null
+++ b/challenge-241/deadmarshal/raku/ch-1.raku
@@ -0,0 +1,15 @@
+#!/usr/bin/env raku
+
+sub arithmetic-triplets(@arr,$diff)
+{
+ my $count = 0;
+ for @arr.combinations(3)
+ {
+ $count++ if $_[1] - $_[0] == $diff == $_[2] - $_[1]
+ }
+ $count
+}
+
+say arithmetic-triplets([0,1,4,6,7,10],3);
+say arithmetic-triplets([4,5,6,7,8,9],2);
+
diff --git a/challenge-241/deadmarshal/raku/ch-2.raku b/challenge-241/deadmarshal/raku/ch-2.raku
new file mode 100644
index 0000000000..2ce81027eb
--- /dev/null
+++ b/challenge-241/deadmarshal/raku/ch-2.raku
@@ -0,0 +1,12 @@
+#!/usr/bin/env raku
+use Prime::Factor;
+
+sub prime-order(@arr)
+{
+ @arr.sort: {my $fa = prime-factors($^a).elems;
+ my $fb = prime-factors($^b).elems;
+ $fa == $fb ?? $^a <=> $^b !! $fa <=> $fb}
+}
+
+say prime-order([11,8,27,4]);
+