diff options
| author | Mohammad Sajid Anwar <Mohammad.Anwar@yahoo.com> | 2024-05-06 22:32:33 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-05-06 22:32:33 +0100 |
| commit | 097d75c029dedbe6d8c9c6aee881fa86bee7d788 (patch) | |
| tree | ee4fe486a76c1004c70527f8ea5475c9d0cca0fe | |
| parent | 995d2bff289dd23a242ac0636849eb3a14635f71 (diff) | |
| parent | c10547930f74a02aa336b815e6c03546ba4072a1 (diff) | |
| download | perlweeklychallenge-club-097d75c029dedbe6d8c9c6aee881fa86bee7d788.tar.gz perlweeklychallenge-club-097d75c029dedbe6d8c9c6aee881fa86bee7d788.tar.bz2 perlweeklychallenge-club-097d75c029dedbe6d8c9c6aee881fa86bee7d788.zip | |
Merge pull request #10052 from deadmarshal/TWC268
TWC268
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]); + |
