aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAli <adeadmarshal@gmail.com>2025-09-08 13:29:18 +0330
committerAli <adeadmarshal@gmail.com>2025-09-08 13:29:18 +0330
commit3a70cd055cbc8181533ff9188d6753bafaab2c60 (patch)
treed4e44d65dc5a05f5a129edfe0d77c4d45fd5e315
parent1d073851f64d0b9edfb3966c3bf788528e72bbf4 (diff)
downloadperlweeklychallenge-club-3a70cd055cbc8181533ff9188d6753bafaab2c60.tar.gz
perlweeklychallenge-club-3a70cd055cbc8181533ff9188d6753bafaab2c60.tar.bz2
perlweeklychallenge-club-3a70cd055cbc8181533ff9188d6753bafaab2c60.zip
TWC338
-rw-r--r--challenge-338/deadmarshal/blog.txt1
-rw-r--r--challenge-338/deadmarshal/go/ch1.go27
-rw-r--r--challenge-338/deadmarshal/go/ch2.go33
-rw-r--r--challenge-338/deadmarshal/haskell/ch1.hs13
-rw-r--r--challenge-338/deadmarshal/haskell/ch2.hs27
-rw-r--r--challenge-338/deadmarshal/modula-3/Ch1/src/Ch1.m353
-rw-r--r--challenge-338/deadmarshal/modula-3/Ch1/src/m3makefile4
-rw-r--r--challenge-338/deadmarshal/modula-3/Ch2/src/Ch2.m338
-rw-r--r--challenge-338/deadmarshal/modula-3/Ch2/src/m3makefile4
-rw-r--r--challenge-338/deadmarshal/perl/ch-1.pl25
-rw-r--r--challenge-338/deadmarshal/perl/ch-2.pl19
11 files changed, 244 insertions, 0 deletions
diff --git a/challenge-338/deadmarshal/blog.txt b/challenge-338/deadmarshal/blog.txt
new file mode 100644
index 0000000000..11447fe5fb
--- /dev/null
+++ b/challenge-338/deadmarshal/blog.txt
@@ -0,0 +1 @@
+https://deadmarshal.blogspot.com/2025/09/twc338.html
diff --git a/challenge-338/deadmarshal/go/ch1.go b/challenge-338/deadmarshal/go/ch1.go
new file mode 100644
index 0000000000..6a6dcef277
--- /dev/null
+++ b/challenge-338/deadmarshal/go/ch1.go
@@ -0,0 +1,27 @@
+package main
+
+import (
+ "fmt"
+)
+
+func highestRow(arr [][]int) int {
+ var max int
+ for _, a := range arr {
+ sum := 0
+ for _, v := range a {
+ sum += v
+ }
+ if sum > max {
+ max = sum
+ }
+ }
+ return max
+}
+
+func main() {
+ fmt.Println(highestRow([][]int{{4, 4, 4, 4}, {10, 0, 0, 0}, {2, 2, 2, 9}}))
+ fmt.Println(highestRow([][]int{{1, 5}, {7, 3}, {3, 5}}))
+ fmt.Println(highestRow([][]int{{1, 2, 3}, {3, 2, 1}}))
+ fmt.Println(highestRow([][]int{{2, 7, 8}, {7, 1, 3}, {1, 9, 5}}))
+ fmt.Println(highestRow([][]int{{5, 5, 5}, {0, 100, 0}, {25, 25, 25}}))
+}
diff --git a/challenge-338/deadmarshal/go/ch2.go b/challenge-338/deadmarshal/go/ch2.go
new file mode 100644
index 0000000000..d18060e8e6
--- /dev/null
+++ b/challenge-338/deadmarshal/go/ch2.go
@@ -0,0 +1,33 @@
+package main
+
+import (
+ "fmt"
+)
+
+func abs(x int) int {
+ if x < 0 {
+ return -x
+ }
+ return x
+}
+
+func maxDistance(a1, a2 []int) int {
+ var max int
+ for _, v := range a1 {
+ for _, v2 := range a2 {
+ abs := abs(v - v2)
+ if abs > max {
+ max = abs
+ }
+ }
+ }
+ return max
+}
+
+func main() {
+ fmt.Println(maxDistance([]int{4, 5, 7}, []int{9, 1, 3, 4}))
+ fmt.Println(maxDistance([]int{2, 3, 5, 4}, []int{3, 2, 5, 5, 8, 7}))
+ fmt.Println(maxDistance([]int{2, 1, 11, 3}, []int{2, 5, 10, 2}))
+ fmt.Println(maxDistance([]int{1, 2, 3}, []int{3, 2, 1}))
+ fmt.Println(maxDistance([]int{1, 0, 2, 3}, []int{5, 0}))
+}
diff --git a/challenge-338/deadmarshal/haskell/ch1.hs b/challenge-338/deadmarshal/haskell/ch1.hs
new file mode 100644
index 0000000000..10e5387bba
--- /dev/null
+++ b/challenge-338/deadmarshal/haskell/ch1.hs
@@ -0,0 +1,13 @@
+module Ch1 where
+
+highestRow :: Integral a => [[a]] -> a
+highestRow xs = maximum $ map sum xs
+
+main :: IO ()
+main = do
+ print $ highestRow [[4,4,4,4],[10,0,0,0],[2,2,2,9]]
+ print $ highestRow [[1,5],[7,3],[3,5]]
+ print $ highestRow [[1,2,3],[3,2,1]]
+ print $ highestRow [[2,8,7],[7,1,3],[1,9,5]]
+ print $ highestRow [[10,20,30],[5,5,5],[0,100,0],[25,25,25]]
+
diff --git a/challenge-338/deadmarshal/haskell/ch2.hs b/challenge-338/deadmarshal/haskell/ch2.hs
new file mode 100644
index 0000000000..c42ea728ae
--- /dev/null
+++ b/challenge-338/deadmarshal/haskell/ch2.hs
@@ -0,0 +1,27 @@
+module Ch2 where
+
+minmax :: Ord a => [a] -> (Maybe a,Maybe a)
+minmax [] = (Nothing,Nothing)
+minmax [x] = (Just x,Just x)
+minmax (x:y:xs)
+ | x < y = let (minVal,maxVal) = minmax (x:xs)
+ in (minVal, max (Just y) maxVal)
+ | otherwise = let (minVal,maxVal) = minmax (y:xs)
+ in (minVal, max (Just x) maxVal)
+
+maxDistance :: (Ord a, Num a) => [a] -> [a] -> Maybe a
+maxDistance xs ys = liftA2 max diff1 diff2
+ where
+ (min_xs,max_xs) = minmax xs
+ (min_ys,max_ys) = minmax ys
+ diff1 = liftA2 (-) max_xs min_ys
+ diff2 = liftA2 (-) max_ys min_xs
+
+main :: IO ()
+main = do
+ print $ maxDistance [4,5,7] [9,1,3,4]
+ print $ maxDistance [2,3,5,4] [3,2,5,5,8,7]
+ print $ maxDistance [2,1,11,3] [2,5,10,2]
+ print $ maxDistance [1,2,3] [3,2,1]
+ print $ maxDistance [1,0,2,3] [5,0]
+
diff --git a/challenge-338/deadmarshal/modula-3/Ch1/src/Ch1.m3 b/challenge-338/deadmarshal/modula-3/Ch1/src/Ch1.m3
new file mode 100644
index 0000000000..0873efdae8
--- /dev/null
+++ b/challenge-338/deadmarshal/modula-3/Ch1/src/Ch1.m3
@@ -0,0 +1,53 @@
+MODULE Ch1 EXPORTS Main;
+
+IMPORT SIO;
+
+VAR
+ A1 := ARRAY[0..2],[0..3] OF INTEGER{
+ ARRAY[0..3] OF INTEGER{4,4,4,4},
+ ARRAY[0..3] OF INTEGER{10,0,0,0},
+ ARRAY[0..3] OF INTEGER{2,2,2,9}};
+
+ A2 := ARRAY[0..2],[0..1] OF INTEGER{
+ ARRAY[0..1] OF INTEGER{1,5},
+ ARRAY[0..1] OF INTEGER{7,3},
+ ARRAY[0..1] OF INTEGER{3,5}};
+
+ A3 := ARRAY[0..1],[0..2] OF INTEGER{
+ ARRAY[0..2] OF INTEGER{1,2,3},
+ ARRAY[0..2] OF INTEGER{3,2,1}};
+
+ A4 := ARRAY[0..2],[0..2] OF INTEGER{
+ ARRAY[0..2] OF INTEGER{2,8,7},
+ ARRAY[0..2] OF INTEGER{7,1,3},
+ ARRAY[0..2] OF INTEGER{1,9,5}};
+
+ A5 := ARRAY[0..3],[0..2] OF INTEGER{
+ ARRAY[0..2] OF INTEGER{10,20,30},
+ ARRAY[0..2] OF INTEGER{5,5,5},
+ ARRAY[0..2] OF INTEGER{0,100,0},
+ ARRAY[0..2] OF INTEGER{25,25,25}};
+
+PROCEDURE HighestRow(VAR A:ARRAY OF ARRAY OF INTEGER):INTEGER =
+ VAR
+ Max := FIRST(INTEGER);
+ Sum:INTEGER;
+ BEGIN
+ FOR I := FIRST(A) TO LAST(A) DO
+ Sum := 0;
+ FOR J := FIRST(A[I]) TO LAST(A[I]) DO
+ INC(Sum,A[I,J])
+ END;
+ IF Sum > Max THEN Max := Sum END;
+ END;
+ RETURN Max
+ END HighestRow;
+
+BEGIN
+ SIO.PutInt(HighestRow(A1)); SIO.Nl();
+ SIO.PutInt(HighestRow(A2)); SIO.Nl();
+ SIO.PutInt(HighestRow(A3)); SIO.Nl();
+ SIO.PutInt(HighestRow(A4)); SIO.Nl();
+ SIO.PutInt(HighestRow(A5)); SIO.Nl()
+END Ch1.
+
diff --git a/challenge-338/deadmarshal/modula-3/Ch1/src/m3makefile b/challenge-338/deadmarshal/modula-3/Ch1/src/m3makefile
new file mode 100644
index 0000000000..643b33d043
--- /dev/null
+++ b/challenge-338/deadmarshal/modula-3/Ch1/src/m3makefile
@@ -0,0 +1,4 @@
+import("libm3")
+import("libsio")
+implementation("Ch1")
+program("Ch1")
diff --git a/challenge-338/deadmarshal/modula-3/Ch2/src/Ch2.m3 b/challenge-338/deadmarshal/modula-3/Ch2/src/Ch2.m3
new file mode 100644
index 0000000000..26839504b4
--- /dev/null
+++ b/challenge-338/deadmarshal/modula-3/Ch2/src/Ch2.m3
@@ -0,0 +1,38 @@
+MODULE Ch2 EXPORTS Main;
+
+IMPORT SIO;
+
+VAR
+ A1 := ARRAY[0..2] OF INTEGER{4,5,7};
+ A2 := ARRAY[0..3] OF INTEGER{9,1,3,4};
+ A3 := ARRAY[0..3] OF INTEGER{2,3,5,4};
+ A4 := ARRAY[0..5] OF INTEGER{3,2,5,5,8,7};
+ A5 := ARRAY[0..3] OF INTEGER{2,1,11,3};
+ A6 := ARRAY[0..3] OF INTEGER{2,5,10,2};
+ A7 := ARRAY[0..2] OF INTEGER{1,2,3};
+ A8 := ARRAY[0..2] OF INTEGER{3,2,1};
+ A9 := ARRAY[0..3] OF INTEGER{1,0,2,3};
+ A10 := ARRAY[0..1] OF INTEGER{5,0};
+
+PROCEDURE MaxDistance(VAR A1,A2:ARRAY OF INTEGER):INTEGER =
+ VAR
+ Max := FIRST(INTEGER);
+ BEGIN
+ FOR I := FIRST(A1) TO LAST(A1) DO
+ FOR J := FIRST(A2) TO LAST(A2) DO
+ WITH Abs = ABS(A1[I] - A2[J]) DO
+ IF Abs > Max THEN Max := Abs END
+ END
+ END
+ END;
+ RETURN Max
+ END MaxDistance;
+
+BEGIN
+ SIO.PutInt(MaxDistance(A1,A2)); SIO.Nl();
+ SIO.PutInt(MaxDistance(A3,A4)); SIO.Nl();
+ SIO.PutInt(MaxDistance(A5,A6)); SIO.Nl();
+ SIO.PutInt(MaxDistance(A7,A8)); SIO.Nl();
+ SIO.PutInt(MaxDistance(A9,A10)); SIO.Nl()
+END Ch2.
+
diff --git a/challenge-338/deadmarshal/modula-3/Ch2/src/m3makefile b/challenge-338/deadmarshal/modula-3/Ch2/src/m3makefile
new file mode 100644
index 0000000000..78802242fe
--- /dev/null
+++ b/challenge-338/deadmarshal/modula-3/Ch2/src/m3makefile
@@ -0,0 +1,4 @@
+import("libm3")
+import("libsio")
+implementation("Ch2")
+program("Ch2")
diff --git a/challenge-338/deadmarshal/perl/ch-1.pl b/challenge-338/deadmarshal/perl/ch-1.pl
new file mode 100644
index 0000000000..329cd139c2
--- /dev/null
+++ b/challenge-338/deadmarshal/perl/ch-1.pl
@@ -0,0 +1,25 @@
+#!/usr/bin/env perl
+use strict;
+use warnings;
+use List::Util qw(sum0 max);
+
+sub highest_row{
+ max map{sum0 @$_} @{$_[0]}
+}
+
+printf "%d\n",highest_row([[4,4,4,4],
+ [10,0,0,0],
+ [2,2,2,9]]);
+printf "%d\n",highest_row([[1,5],
+ [7,3],
+ [3,5]]);
+printf "%d\n",highest_row([[1,2,3],
+ [3,2,1]]);
+printf "%d\n",highest_row([[2,8,7],
+ [7,1,3],
+ [1,9,5]]);
+printf "%d\n",highest_row([[10,20,30],
+ [5,5,5],
+ [0,100,0],
+ [25,25,25]]);
+
diff --git a/challenge-338/deadmarshal/perl/ch-2.pl b/challenge-338/deadmarshal/perl/ch-2.pl
new file mode 100644
index 0000000000..3b62e779a6
--- /dev/null
+++ b/challenge-338/deadmarshal/perl/ch-2.pl
@@ -0,0 +1,19 @@
+#!/usr/bin/env perl
+use strict;
+use warnings;
+use List::Util qw(max);
+
+sub max_distance{
+ my @pairs = map{
+ my $x = $_;
+ map {[$x,$_]} @{$_[1]}
+ } @{$_[0]};
+ max map {abs $_->[0] - $_->[1]} @pairs;
+}
+
+printf "%d\n",max_distance([4,5,7],[9,1,3,4]);
+printf "%d\n",max_distance([2,3,5,4],[3,2,5,5,8,7]);
+printf "%d\n",max_distance([2,1,11,3],[2,5,10,2]);
+printf "%d\n",max_distance([1,2,3],[3,2,1]);
+printf "%d\n",max_distance([1,0,2,3],[5,0]);
+