aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMohammad Sajid Anwar <Mohammad.Anwar@yahoo.com>2024-05-06 22:32:33 +0100
committerGitHub <noreply@github.com>2024-05-06 22:32:33 +0100
commit097d75c029dedbe6d8c9c6aee881fa86bee7d788 (patch)
treeee4fe486a76c1004c70527f8ea5475c9d0cca0fe
parent995d2bff289dd23a242ac0636849eb3a14635f71 (diff)
parentc10547930f74a02aa336b815e6c03546ba4072a1 (diff)
downloadperlweeklychallenge-club-097d75c029dedbe6d8c9c6aee881fa86bee7d788.tar.gz
perlweeklychallenge-club-097d75c029dedbe6d8c9c6aee881fa86bee7d788.tar.bz2
perlweeklychallenge-club-097d75c029dedbe6d8c9c6aee881fa86bee7d788.zip
Merge pull request #10052 from deadmarshal/TWC268
TWC268
-rw-r--r--challenge-268/deadmarshal/blog.txt1
-rw-r--r--challenge-268/deadmarshal/modula-3/ch1/src/Ch1.m325
-rw-r--r--challenge-268/deadmarshal/modula-3/ch1/src/IntSorting.i32
-rw-r--r--challenge-268/deadmarshal/modula-3/ch1/src/IntSorting.m32
-rw-r--r--challenge-268/deadmarshal/modula-3/ch1/src/Sorting.ig6
-rw-r--r--challenge-268/deadmarshal/modula-3/ch1/src/Sorting.mg31
-rw-r--r--challenge-268/deadmarshal/modula-3/ch1/src/m3makefile7
-rw-r--r--challenge-268/deadmarshal/modula-3/ch2/src/Ch2.m334
-rw-r--r--challenge-268/deadmarshal/modula-3/ch2/src/IntSorting.i32
-rw-r--r--challenge-268/deadmarshal/modula-3/ch2/src/IntSorting.m32
-rw-r--r--challenge-268/deadmarshal/modula-3/ch2/src/Sorting.ig6
-rw-r--r--challenge-268/deadmarshal/modula-3/ch2/src/Sorting.mg31
-rw-r--r--challenge-268/deadmarshal/modula-3/ch2/src/m3makefile7
-rw-r--r--challenge-268/deadmarshal/perl/ch-1.pl14
-rw-r--r--challenge-268/deadmarshal/perl/ch-2.pl16
15 files changed, 186 insertions, 0 deletions
diff --git a/challenge-268/deadmarshal/blog.txt b/challenge-268/deadmarshal/blog.txt
new file mode 100644
index 0000000000..a05ac9ccc7
--- /dev/null
+++ b/challenge-268/deadmarshal/blog.txt
@@ -0,0 +1 @@
+https://deadmarshal.blogspot.com/2024/05/twc268.html
diff --git a/challenge-268/deadmarshal/modula-3/ch1/src/Ch1.m3 b/challenge-268/deadmarshal/modula-3/ch1/src/Ch1.m3
new file mode 100644
index 0000000000..140fe34e7d
--- /dev/null
+++ b/challenge-268/deadmarshal/modula-3/ch1/src/Ch1.m3
@@ -0,0 +1,25 @@
+MODULE Ch1 EXPORTS Main;
+
+IMPORT SIO,IntSorting;
+
+VAR
+ A1:ARRAY[0..2] OF INTEGER := ARRAY OF INTEGER{3,7,5};
+ A2:ARRAY[0..2] OF INTEGER := ARRAY OF INTEGER{9,5,7};
+ A3:ARRAY[0..2] OF INTEGER := ARRAY OF INTEGER{1,2,1};
+ A4:ARRAY[0..2] OF INTEGER := ARRAY OF INTEGER{5,4,4};
+ A5:ARRAY[0..0] OF INTEGER := ARRAY OF INTEGER{2};
+ A6:ARRAY[0..0] OF INTEGER := ARRAY OF INTEGER{5};
+
+PROCEDURE MagicNumber(VAR A,B:ARRAY OF INTEGER):INTEGER =
+ BEGIN
+ IntSorting.QuickSort(A,FIRST(A),LAST(A));
+ IntSorting.QuickSort(B,FIRST(B),LAST(B));
+ RETURN ABS(A[0] - B[0])
+ END MagicNumber;
+
+BEGIN
+ SIO.PutInt(MagicNumber(A1,A2)); SIO.Nl();
+ SIO.PutInt(MagicNumber(A3,A4)); SIO.Nl();
+ SIO.PutInt(MagicNumber(A5,A6)); SIO.Nl()
+END Ch1.
+
diff --git a/challenge-268/deadmarshal/modula-3/ch1/src/IntSorting.i3 b/challenge-268/deadmarshal/modula-3/ch1/src/IntSorting.i3
new file mode 100644
index 0000000000..4f2c039f64
--- /dev/null
+++ b/challenge-268/deadmarshal/modula-3/ch1/src/IntSorting.i3
@@ -0,0 +1,2 @@
+INTERFACE IntSorting = Sorting(Integer) END IntSorting.
+
diff --git a/challenge-268/deadmarshal/modula-3/ch1/src/IntSorting.m3 b/challenge-268/deadmarshal/modula-3/ch1/src/IntSorting.m3
new file mode 100644
index 0000000000..1d70cff8ee
--- /dev/null
+++ b/challenge-268/deadmarshal/modula-3/ch1/src/IntSorting.m3
@@ -0,0 +1,2 @@
+MODULE IntSorting = Sorting(Integer) END IntSorting.
+
diff --git a/challenge-268/deadmarshal/modula-3/ch1/src/Sorting.ig b/challenge-268/deadmarshal/modula-3/ch1/src/Sorting.ig
new file mode 100644
index 0000000000..77ed8d3f50
--- /dev/null
+++ b/challenge-268/deadmarshal/modula-3/ch1/src/Sorting.ig
@@ -0,0 +1,6 @@
+GENERIC INTERFACE Sorting(Elem);
+
+PROCEDURE QuickSort(VAR A:ARRAY OF Elem.T;Left,Right:INTEGER);
+
+END Sorting.
+
diff --git a/challenge-268/deadmarshal/modula-3/ch1/src/Sorting.mg b/challenge-268/deadmarshal/modula-3/ch1/src/Sorting.mg
new file mode 100644
index 0000000000..cf0dbd6b4a
--- /dev/null
+++ b/challenge-268/deadmarshal/modula-3/ch1/src/Sorting.mg
@@ -0,0 +1,31 @@
+GENERIC MODULE Sorting(Elem);
+
+PROCEDURE Swap(VAR A,B:Elem.T) =
+ VAR Temp:Elem.T := A;
+ BEGIN
+ A := B;
+ B := Temp
+ END Swap;
+
+PROCEDURE QuickSort(VAR A:ARRAY OF Elem.T;Left,Right:INTEGER) =
+ VAR
+ I,J:INTEGER;
+ Pivot:Elem.T;
+ BEGIN
+ I := Left; J := Right;
+ Pivot := A[(Left+Right) DIV 2];
+ REPEAT
+ WHILE Elem.Compare(Pivot,A[I]) > 0 DO INC(I) END;
+ WHILE Elem.Compare(Pivot,A[J]) < 0 DO DEC(J) END;
+ IF I <= J THEN
+ Swap(A[I],A[J]);
+ INC(I); DEC(J)
+ END;
+ UNTIL I > J;
+ IF Left < J THEN QuickSort(A,Left,J) END;
+ IF I < Right THEN QuickSort(A,I,Right) END
+ END QuickSort;
+
+BEGIN
+END Sorting.
+
diff --git a/challenge-268/deadmarshal/modula-3/ch1/src/m3makefile b/challenge-268/deadmarshal/modula-3/ch1/src/m3makefile
new file mode 100644
index 0000000000..f06cf832ba
--- /dev/null
+++ b/challenge-268/deadmarshal/modula-3/ch1/src/m3makefile
@@ -0,0 +1,7 @@
+import("libm3")
+import("libsio")
+module("IntSorting")
+generic_module("Sorting")
+implementation("Ch1")
+program("ch1")
+
diff --git a/challenge-268/deadmarshal/modula-3/ch2/src/Ch2.m3 b/challenge-268/deadmarshal/modula-3/ch2/src/Ch2.m3
new file mode 100644
index 0000000000..3b09cae189
--- /dev/null
+++ b/challenge-268/deadmarshal/modula-3/ch2/src/Ch2.m3
@@ -0,0 +1,34 @@
+MODULE Ch2 EXPORTS Main;
+
+IMPORT SIO,IntSorting,IntSeq;
+
+VAR
+ A1:ARRAY[0..3] OF INTEGER := ARRAY OF INTEGER{2,5,3,4};
+ A2:ARRAY[0..7] OF INTEGER := ARRAY OF INTEGER{9,4,1,3,6,4,6,1};
+ A3:ARRAY[0..3] OF INTEGER := ARRAY OF INTEGER{1,2,2,3};
+
+PROCEDURE NumberGame(VAR A:ARRAY OF INTEGER):IntSeq.T =
+ VAR Ret:IntSeq.T := NEW(IntSeq.T).init(NUMBER(A));
+ BEGIN
+ IntSorting.QuickSort(A,FIRST(A),LAST(A));
+ FOR I := FIRST(A) TO LAST(A) BY 2 DO
+ Ret.addhi(A[I+1]);
+ Ret.addhi(A[I])
+ END;
+ RETURN Ret
+ END NumberGame;
+
+PROCEDURE PrintSequence(READONLY S:IntSeq.T) =
+ BEGIN
+ FOR I := 0 TO S.size()-1 DO
+ SIO.PutInt(S.get(I)); SIO.PutChar(' ')
+ END;
+ SIO.Nl()
+ END PrintSequence;
+
+BEGIN
+ PrintSequence(NumberGame(A1));
+ PrintSequence(NumberGame(A2));
+ PrintSequence(NumberGame(A3));
+END Ch2.
+
diff --git a/challenge-268/deadmarshal/modula-3/ch2/src/IntSorting.i3 b/challenge-268/deadmarshal/modula-3/ch2/src/IntSorting.i3
new file mode 100644
index 0000000000..4f2c039f64
--- /dev/null
+++ b/challenge-268/deadmarshal/modula-3/ch2/src/IntSorting.i3
@@ -0,0 +1,2 @@
+INTERFACE IntSorting = Sorting(Integer) END IntSorting.
+
diff --git a/challenge-268/deadmarshal/modula-3/ch2/src/IntSorting.m3 b/challenge-268/deadmarshal/modula-3/ch2/src/IntSorting.m3
new file mode 100644
index 0000000000..1d70cff8ee
--- /dev/null
+++ b/challenge-268/deadmarshal/modula-3/ch2/src/IntSorting.m3
@@ -0,0 +1,2 @@
+MODULE IntSorting = Sorting(Integer) END IntSorting.
+
diff --git a/challenge-268/deadmarshal/modula-3/ch2/src/Sorting.ig b/challenge-268/deadmarshal/modula-3/ch2/src/Sorting.ig
new file mode 100644
index 0000000000..77ed8d3f50
--- /dev/null
+++ b/challenge-268/deadmarshal/modula-3/ch2/src/Sorting.ig
@@ -0,0 +1,6 @@
+GENERIC INTERFACE Sorting(Elem);
+
+PROCEDURE QuickSort(VAR A:ARRAY OF Elem.T;Left,Right:INTEGER);
+
+END Sorting.
+
diff --git a/challenge-268/deadmarshal/modula-3/ch2/src/Sorting.mg b/challenge-268/deadmarshal/modula-3/ch2/src/Sorting.mg
new file mode 100644
index 0000000000..cf0dbd6b4a
--- /dev/null
+++ b/challenge-268/deadmarshal/modula-3/ch2/src/Sorting.mg
@@ -0,0 +1,31 @@
+GENERIC MODULE Sorting(Elem);
+
+PROCEDURE Swap(VAR A,B:Elem.T) =
+ VAR Temp:Elem.T := A;
+ BEGIN
+ A := B;
+ B := Temp
+ END Swap;
+
+PROCEDURE QuickSort(VAR A:ARRAY OF Elem.T;Left,Right:INTEGER) =
+ VAR
+ I,J:INTEGER;
+ Pivot:Elem.T;
+ BEGIN
+ I := Left; J := Right;
+ Pivot := A[(Left+Right) DIV 2];
+ REPEAT
+ WHILE Elem.Compare(Pivot,A[I]) > 0 DO INC(I) END;
+ WHILE Elem.Compare(Pivot,A[J]) < 0 DO DEC(J) END;
+ IF I <= J THEN
+ Swap(A[I],A[J]);
+ INC(I); DEC(J)
+ END;
+ UNTIL I > J;
+ IF Left < J THEN QuickSort(A,Left,J) END;
+ IF I < Right THEN QuickSort(A,I,Right) END
+ END QuickSort;
+
+BEGIN
+END Sorting.
+
diff --git a/challenge-268/deadmarshal/modula-3/ch2/src/m3makefile b/challenge-268/deadmarshal/modula-3/ch2/src/m3makefile
new file mode 100644
index 0000000000..4a6ef19e76
--- /dev/null
+++ b/challenge-268/deadmarshal/modula-3/ch2/src/m3makefile
@@ -0,0 +1,7 @@
+import("libm3")
+import("libsio")
+module("IntSorting")
+generic_module("Sorting")
+implementation("Ch2")
+program("ch2")
+
diff --git a/challenge-268/deadmarshal/perl/ch-1.pl b/challenge-268/deadmarshal/perl/ch-1.pl
new file mode 100644
index 0000000000..c6c7bb2471
--- /dev/null
+++ b/challenge-268/deadmarshal/perl/ch-1.pl
@@ -0,0 +1,14 @@
+#!/usr/bin/env perl
+use strict;
+use warnings;
+
+sub magic_number{
+ my @x = sort{$a <=> $b} @{$_[0]};
+ my @y = sort{$a <=> $b} @{$_[1]};
+ abs($x[0] - $y[0])
+}
+
+printf "%d\n",magic_number([3,7,5],[9,5,7]);
+printf "%d\n",magic_number([1,2,1],[5,4,4]);
+printf "%d\n",magic_number([2],[5]);
+
diff --git a/challenge-268/deadmarshal/perl/ch-2.pl b/challenge-268/deadmarshal/perl/ch-2.pl
new file mode 100644
index 0000000000..132db835c2
--- /dev/null
+++ b/challenge-268/deadmarshal/perl/ch-2.pl
@@ -0,0 +1,16 @@
+#!/usr/bin/env perl
+use strict;
+use warnings;
+use Data::Show;
+
+sub number_game{
+ my @arr = sort{$a <=> $b} @{$_[0]};
+ my @ret;
+ push @ret,reverse splice @arr,0,2 while(@arr);
+ @ret
+}
+
+print show number_game([2,5,3,4]);
+print show number_game([9,4,1,3,6,4,6,1]);
+print show number_game([1,2,2,3]);
+