diff options
| author | Ali <adeadmarshal@gmail.com> | 2025-09-08 13:29:18 +0330 |
|---|---|---|
| committer | Ali <adeadmarshal@gmail.com> | 2025-09-08 13:29:18 +0330 |
| commit | 3a70cd055cbc8181533ff9188d6753bafaab2c60 (patch) | |
| tree | d4e44d65dc5a05f5a129edfe0d77c4d45fd5e315 | |
| parent | 1d073851f64d0b9edfb3966c3bf788528e72bbf4 (diff) | |
| download | perlweeklychallenge-club-3a70cd055cbc8181533ff9188d6753bafaab2c60.tar.gz perlweeklychallenge-club-3a70cd055cbc8181533ff9188d6753bafaab2c60.tar.bz2 perlweeklychallenge-club-3a70cd055cbc8181533ff9188d6753bafaab2c60.zip | |
TWC338
| -rw-r--r-- | challenge-338/deadmarshal/blog.txt | 1 | ||||
| -rw-r--r-- | challenge-338/deadmarshal/go/ch1.go | 27 | ||||
| -rw-r--r-- | challenge-338/deadmarshal/go/ch2.go | 33 | ||||
| -rw-r--r-- | challenge-338/deadmarshal/haskell/ch1.hs | 13 | ||||
| -rw-r--r-- | challenge-338/deadmarshal/haskell/ch2.hs | 27 | ||||
| -rw-r--r-- | challenge-338/deadmarshal/modula-3/Ch1/src/Ch1.m3 | 53 | ||||
| -rw-r--r-- | challenge-338/deadmarshal/modula-3/Ch1/src/m3makefile | 4 | ||||
| -rw-r--r-- | challenge-338/deadmarshal/modula-3/Ch2/src/Ch2.m3 | 38 | ||||
| -rw-r--r-- | challenge-338/deadmarshal/modula-3/Ch2/src/m3makefile | 4 | ||||
| -rw-r--r-- | challenge-338/deadmarshal/perl/ch-1.pl | 25 | ||||
| -rw-r--r-- | challenge-338/deadmarshal/perl/ch-2.pl | 19 |
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]); + |
