aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMohammad Sajid Anwar <Mohammad.Anwar@yahoo.com>2025-08-12 13:25:24 +0100
committerGitHub <noreply@github.com>2025-08-12 13:25:24 +0100
commit2b3d0b7ac5fdd3b1474689a9c4e97110aaba0a9f (patch)
tree1561bedd3eb8acd6e30ff3d1ca37a295dba9b714
parent2fe9107db0d8bb930013f2d6a670ceff19010079 (diff)
parent785b78fa81349e9f90b83830160ca588a3d6dc4f (diff)
downloadperlweeklychallenge-club-2b3d0b7ac5fdd3b1474689a9c4e97110aaba0a9f.tar.gz
perlweeklychallenge-club-2b3d0b7ac5fdd3b1474689a9c4e97110aaba0a9f.tar.bz2
perlweeklychallenge-club-2b3d0b7ac5fdd3b1474689a9c4e97110aaba0a9f.zip
Merge pull request #12508 from deadmarshal/TWC334
TWC334
-rw-r--r--challenge-334/deadmarshal/blog.txt1
-rw-r--r--challenge-334/deadmarshal/c/ch-1.c28
-rw-r--r--challenge-334/deadmarshal/c/ch-2.c39
-rw-r--r--challenge-334/deadmarshal/java/Ch1.java15
-rw-r--r--challenge-334/deadmarshal/java/Ch2.java30
-rw-r--r--challenge-334/deadmarshal/modula-3/Ch1/src/Ch1.m327
-rw-r--r--challenge-334/deadmarshal/modula-3/Ch1/src/m3makefile4
-rw-r--r--challenge-334/deadmarshal/modula-3/Ch2/src/Ch2.m363
-rw-r--r--challenge-334/deadmarshal/modula-3/Ch2/src/m3makefile4
-rw-r--r--challenge-334/deadmarshal/perl/ch-1.pl15
-rw-r--r--challenge-334/deadmarshal/perl/ch-2.pl26
11 files changed, 252 insertions, 0 deletions
diff --git a/challenge-334/deadmarshal/blog.txt b/challenge-334/deadmarshal/blog.txt
new file mode 100644
index 0000000000..78be1f9418
--- /dev/null
+++ b/challenge-334/deadmarshal/blog.txt
@@ -0,0 +1 @@
+https://deadmarshal.blogspot.com/2025/08/twc334.html
diff --git a/challenge-334/deadmarshal/c/ch-1.c b/challenge-334/deadmarshal/c/ch-1.c
new file mode 100644
index 0000000000..8f8ec2f7b8
--- /dev/null
+++ b/challenge-334/deadmarshal/c/ch-1.c
@@ -0,0 +1,28 @@
+#include<stdio.h>
+#include<assert.h>
+
+int range_sum(const int *arr,const size_t sz,
+ const size_t x,const size_t y)
+{
+ assert(x >= 0 && y < sz && "x or y is out of bounds!");
+ int sum = 0;
+ for(size_t i = x; i <= y; ++i) sum += arr[i];
+ return sum;
+}
+
+int main(void)
+{
+ const int arr1[] = {-2,0,3,-5,2,-1};
+ const int arr2[] = {1,-2,3,-4,5};
+ const int arr3[] = {1,0,2,-1,3};
+ const int arr4[] = {-5,4,-3,2,-1,0};
+ const int arr5[] = {-1,0,2,-3,-2,1};
+ const size_t sz1 = 6,sz2 = 5,sz3 = 5,sz4 = 6,sz5 = 6;
+ printf("%d\n",range_sum(arr1,sz1,0,2));
+ printf("%d\n",range_sum(arr2,sz2,1,3));
+ printf("%d\n",range_sum(arr3,sz3,3,4));
+ printf("%d\n",range_sum(arr4,sz4,0,3));
+ printf("%d\n",range_sum(arr5,sz5,0,2));
+ return 0;
+}
+
diff --git a/challenge-334/deadmarshal/c/ch-2.c b/challenge-334/deadmarshal/c/ch-2.c
new file mode 100644
index 0000000000..31fd0b49fc
--- /dev/null
+++ b/challenge-334/deadmarshal/c/ch-2.c
@@ -0,0 +1,39 @@
+#include<stdio.h>
+#include<stdlib.h>
+#include<limits.h>
+
+int nearest_valid_point(const int arr[][2],
+ const size_t sz,
+ const int x,
+ const int y)
+{
+ int res = -1, min = INT_MAX;
+ for(size_t i = 0; i < sz; ++i) {
+ int a = arr[i][0], b = arr[i][1];
+ if((a == x) || (b == y)) {
+ int d = abs(a - x) + abs(b - y);
+ if(d < min) {
+ min = d;
+ res = i;
+ }
+ }
+ }
+ return res;
+}
+
+int main(void)
+{
+ const int arr1[][2] = {{1,2},{3,1},{2,4},{2,3}};
+ const int arr2[][2] = {{3,4},{2,3},{1,5},{2,5}};
+ const int arr3[][2] = {{2,2},{3,3},{4,4}};
+ const int arr4[][2] = {{0,1},{1,0},{0,2},{2,0}};
+ const int arr5[][2] = {{5,6},{6,5},{5,4},{4,5}};
+ const size_t sz1 = 4,sz2 = 4,sz3 = 3,sz4 = 4,sz5 = 4;
+ printf("%d\n",nearest_valid_point(arr1,sz1,3,4));
+ printf("%d\n",nearest_valid_point(arr2,sz2,2,5));
+ printf("%d\n",nearest_valid_point(arr3,sz3,1,1));
+ printf("%d\n",nearest_valid_point(arr4,sz4,0,0));
+ printf("%d\n",nearest_valid_point(arr5,sz5,5,5));
+ return 0;
+}
+
diff --git a/challenge-334/deadmarshal/java/Ch1.java b/challenge-334/deadmarshal/java/Ch1.java
new file mode 100644
index 0000000000..a710be4eab
--- /dev/null
+++ b/challenge-334/deadmarshal/java/Ch1.java
@@ -0,0 +1,15 @@
+public class Ch1 {
+ public static void main(String[] args) {
+ System.out.println(range_sum(new int[]{-2, 0, 3, -5, 2, -1}, 0, 2));
+ System.out.println(range_sum(new int[]{1, -2, 3, -4, 5}, 1, 3));
+ System.out.println(range_sum(new int[]{1, 0, 2, -1, 3}, 3, 4));
+ System.out.println(range_sum(new int[]{-5, 4, -3, 2, -1, 0}, 0, 3));
+ System.out.println(range_sum(new int[]{-1, 0, 2, -3, -2, 1}, 0, 2));
+ }
+
+ private static int range_sum(int[] arr, int x, int y) {
+ int s = 0;
+ for (int i = x; i <= y; i++) s += arr[i];
+ return s;
+ }
+} \ No newline at end of file
diff --git a/challenge-334/deadmarshal/java/Ch2.java b/challenge-334/deadmarshal/java/Ch2.java
new file mode 100644
index 0000000000..8ab7667dd3
--- /dev/null
+++ b/challenge-334/deadmarshal/java/Ch2.java
@@ -0,0 +1,30 @@
+public class Ch2 {
+ public static void main(String[] args) {
+ System.out.println(nearest_valid_point(new int[][]{{1, 2}, {3, 1}, {2, 4}, {2, 3}},
+ 3, 4));
+ System.out.println(nearest_valid_point(new int[][]{{3, 4}, {2, 3}, {1, 5}, {2, 5}},
+ 2, 5));
+ System.out.println(nearest_valid_point(new int[][]{{2, 2}, {3, 3}, {4, 4}},
+ 1, 1));
+ System.out.println(nearest_valid_point(new int[][]{{0, 1}, {1, 0}, {0, 2}, {2, 0}},
+ 0, 0));
+ System.out.println(nearest_valid_point(new int[][]{{5, 6}, {6, 5}, {5, 4}, {4, 5}},
+ 5, 5));
+ }
+
+ private static int nearest_valid_point(int[][] arr, int x, int y) {
+ int res = -1, min = Integer.MAX_VALUE;
+ for (int i = 0; i < arr.length; ++i) {
+ int a = arr[i][0], b = arr[i][1];
+ if (a == x || b == y) {
+ int d = Math.abs(a - x) + Math.abs(b - y);
+ if (d < min) {
+ min = d;
+ res = i;
+ }
+ }
+ }
+ return res;
+ }
+}
+
diff --git a/challenge-334/deadmarshal/modula-3/Ch1/src/Ch1.m3 b/challenge-334/deadmarshal/modula-3/Ch1/src/Ch1.m3
new file mode 100644
index 0000000000..41c8365683
--- /dev/null
+++ b/challenge-334/deadmarshal/modula-3/Ch1/src/Ch1.m3
@@ -0,0 +1,27 @@
+MODULE Ch1 EXPORTS Main;
+
+IMPORT SIO;
+
+VAR
+ A1 := ARRAY[0..5] OF INTEGER{-2,0,3,-5,2,-1};
+ A2 := ARRAY[0..4] OF INTEGER{1,-2,3,-4,5};
+ A3 := ARRAY[0..4] OF INTEGER{1,0,2,-1,3};
+ A4 := ARRAY[0..5] OF INTEGER{-5,4,-3,2,-1,0};
+ A5 := ARRAY[0..5] OF INTEGER{-1,0,2,-3,-2,1};
+
+PROCEDURE RangeSum(VAR A:ARRAY OF INTEGER;
+ READONLY X,Y:INTEGER):INTEGER =
+ VAR Sum := 0;
+ BEGIN
+ FOR I := X TO Y DO INC(Sum,A[I]) END;
+ RETURN Sum
+ END RangeSum;
+
+BEGIN
+ SIO.PutInt(RangeSum(A1,0,2)); SIO.Nl();
+ SIO.PutInt(RangeSum(A2,1,3)); SIO.Nl();
+ SIO.PutInt(RangeSum(A3,3,4)); SIO.Nl();
+ SIO.PutInt(RangeSum(A4,0,3)); SIO.Nl();
+ SIO.PutInt(RangeSum(A5,0,2)); SIO.Nl()
+END Ch1.
+
diff --git a/challenge-334/deadmarshal/modula-3/Ch1/src/m3makefile b/challenge-334/deadmarshal/modula-3/Ch1/src/m3makefile
new file mode 100644
index 0000000000..643b33d043
--- /dev/null
+++ b/challenge-334/deadmarshal/modula-3/Ch1/src/m3makefile
@@ -0,0 +1,4 @@
+import("libm3")
+import("libsio")
+implementation("Ch1")
+program("Ch1")
diff --git a/challenge-334/deadmarshal/modula-3/Ch2/src/Ch2.m3 b/challenge-334/deadmarshal/modula-3/Ch2/src/Ch2.m3
new file mode 100644
index 0000000000..d0a100576d
--- /dev/null
+++ b/challenge-334/deadmarshal/modula-3/Ch2/src/Ch2.m3
@@ -0,0 +1,63 @@
+MODULE Ch2 EXPORTS Main;
+
+IMPORT SIO;
+
+VAR
+ A1 := ARRAY[0..3],[0..1] OF INTEGER{
+ ARRAY[0..1] OF INTEGER{1,2},
+ ARRAY[0..1] OF INTEGER{3,1},
+ ARRAY[0..1] OF INTEGER{2,4},
+ ARRAY[0..1] OF INTEGER{2,3}};
+
+ A2 := ARRAY[0..3],[0..1] OF INTEGER{
+ ARRAY[0..1] OF INTEGER{3,4},
+ ARRAY[0..1] OF INTEGER{2,3},
+ ARRAY[0..1] OF INTEGER{1,5},
+ ARRAY[0..1] OF INTEGER{2,5}};
+
+ A3 := ARRAY[0..2],[0..1] OF INTEGER{
+ ARRAY[0..1] OF INTEGER{2,2},
+ ARRAY[0..1] OF INTEGER{3,3},
+ ARRAY[0..1] OF INTEGER{4,4}};
+
+ A4 := ARRAY[0..3],[0..1] OF INTEGER{
+ ARRAY[0..1] OF INTEGER{0,1},
+ ARRAY[0..1] OF INTEGER{1,0},
+ ARRAY[0..1] OF INTEGER{0,2},
+ ARRAY[0..1] OF INTEGER{2,0}};
+
+ A5 := ARRAY[0..3],[0..1] OF INTEGER{
+ ARRAY[0..1] OF INTEGER{5,6},
+ ARRAY[0..1] OF INTEGER{6,5},
+ ARRAY[0..1] OF INTEGER{5,4},
+ ARRAY[0..1] OF INTEGER{4,5}};
+
+PROCEDURE NearestValidPoint(VAR A:ARRAY OF ARRAY OF INTEGER;
+ READONLY X,Y:INTEGER):INTEGER =
+ VAR
+ Res := -1;
+ Min := LAST(INTEGER);
+ D:INTEGER;
+ BEGIN
+ FOR I := FIRST(A) TO LAST(A) DO
+ WITH X1 = A[I,FIRST(A)],Y1 = A[I,FIRST(A)+1] DO
+ IF X1 = X OR Y1 = Y THEN
+ D := ABS(X1 - X) + ABS(Y1 - Y);
+ IF D < Min THEN
+ Min := D;
+ Res := I
+ END
+ END
+ END
+ END;
+ RETURN Res
+ END NearestValidPoint;
+
+BEGIN
+ SIO.PutInt(NearestValidPoint(A1,3,4)); SIO.Nl();
+ SIO.PutInt(NearestValidPoint(A2,2,5)); SIO.Nl();
+ SIO.PutInt(NearestValidPoint(A3,1,1)); SIO.Nl();
+ SIO.PutInt(NearestValidPoint(A4,0,0)); SIO.Nl();
+ SIO.PutInt(NearestValidPoint(A5,5,5)); SIO.Nl()
+END Ch2.
+
diff --git a/challenge-334/deadmarshal/modula-3/Ch2/src/m3makefile b/challenge-334/deadmarshal/modula-3/Ch2/src/m3makefile
new file mode 100644
index 0000000000..78802242fe
--- /dev/null
+++ b/challenge-334/deadmarshal/modula-3/Ch2/src/m3makefile
@@ -0,0 +1,4 @@
+import("libm3")
+import("libsio")
+implementation("Ch2")
+program("Ch2")
diff --git a/challenge-334/deadmarshal/perl/ch-1.pl b/challenge-334/deadmarshal/perl/ch-1.pl
new file mode 100644
index 0000000000..37875a8a4e
--- /dev/null
+++ b/challenge-334/deadmarshal/perl/ch-1.pl
@@ -0,0 +1,15 @@
+#!/usr/bin/env perl
+use strict;
+use warnings;
+use List::Util qw(sum0);
+
+sub range_sum{
+ sum0 @{$_[0]}[$_[1]..$_[2]];
+}
+
+printf "%d\n",range_sum([-2,0,3,-5,2,-1],0,2);
+printf "%d\n",range_sum([1,-2,3,-4,5],1,3);
+printf "%d\n",range_sum([1,0,2,-1,3],3,4);
+printf "%d\n",range_sum([-5,4,-3,2,-1,0],0,3);
+printf "%d\n",range_sum([-1,0,2,-3,-2,1],0,2);
+
diff --git a/challenge-334/deadmarshal/perl/ch-2.pl b/challenge-334/deadmarshal/perl/ch-2.pl
new file mode 100644
index 0000000000..4c5d576818
--- /dev/null
+++ b/challenge-334/deadmarshal/perl/ch-2.pl
@@ -0,0 +1,26 @@
+#!/usr/bin/env perl
+use strict;
+use warnings;
+
+sub nearest_valid_point{
+ my ($p,$x,$y) = @_;
+ my ($res,$min) = (-1,1000);
+ foreach my $i(0..$#$p) {
+ my ($a,$b) = ($p->[$i][0],$p->[$i][1]);
+ if($a == $x || $b == $y){
+ my $d = abs($a - $x) + abs($b - $y);
+ if($d < $min) {
+ $min = $d;
+ $res = $i
+ }
+ }
+ }
+ $res
+}
+
+printf "%d\n",nearest_valid_point([[1,2],[3,1],[2,4],[2,3]],3,4);
+printf "%d\n",nearest_valid_point([[3,4],[2,3],[1,5],[2,5]],2,5);
+printf "%d\n",nearest_valid_point([[2,2],[3,3],[4,4]],1,1);
+printf "%d\n",nearest_valid_point([[0,1],[1,0],[0,2],[2,0]],0,0);
+printf "%d\n",nearest_valid_point([[5,6],[6,5],[5,4],[4,5]],5,5);
+