diff options
| author | Mohammad Sajid Anwar <Mohammad.Anwar@yahoo.com> | 2025-08-12 13:25:24 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2025-08-12 13:25:24 +0100 |
| commit | 2b3d0b7ac5fdd3b1474689a9c4e97110aaba0a9f (patch) | |
| tree | 1561bedd3eb8acd6e30ff3d1ca37a295dba9b714 | |
| parent | 2fe9107db0d8bb930013f2d6a670ceff19010079 (diff) | |
| parent | 785b78fa81349e9f90b83830160ca588a3d6dc4f (diff) | |
| download | perlweeklychallenge-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.txt | 1 | ||||
| -rw-r--r-- | challenge-334/deadmarshal/c/ch-1.c | 28 | ||||
| -rw-r--r-- | challenge-334/deadmarshal/c/ch-2.c | 39 | ||||
| -rw-r--r-- | challenge-334/deadmarshal/java/Ch1.java | 15 | ||||
| -rw-r--r-- | challenge-334/deadmarshal/java/Ch2.java | 30 | ||||
| -rw-r--r-- | challenge-334/deadmarshal/modula-3/Ch1/src/Ch1.m3 | 27 | ||||
| -rw-r--r-- | challenge-334/deadmarshal/modula-3/Ch1/src/m3makefile | 4 | ||||
| -rw-r--r-- | challenge-334/deadmarshal/modula-3/Ch2/src/Ch2.m3 | 63 | ||||
| -rw-r--r-- | challenge-334/deadmarshal/modula-3/Ch2/src/m3makefile | 4 | ||||
| -rw-r--r-- | challenge-334/deadmarshal/perl/ch-1.pl | 15 | ||||
| -rw-r--r-- | challenge-334/deadmarshal/perl/ch-2.pl | 26 |
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); + |
