aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMohammad Sajid Anwar <Mohammad.Anwar@yahoo.com>2025-09-17 09:11:21 +0100
committerGitHub <noreply@github.com>2025-09-17 09:11:21 +0100
commit61ed1965dca92005b484ecc0e0dac504cf885558 (patch)
tree6ed4e1dbf133dd287e8399d73ff4bec9829fc56f
parentd429f2de33ddfa98e751a6849fa08e7227712778 (diff)
parentde605ab5d0b5839224d64aadaac2499ec0e4d9b1 (diff)
downloadperlweeklychallenge-club-61ed1965dca92005b484ecc0e0dac504cf885558.tar.gz
perlweeklychallenge-club-61ed1965dca92005b484ecc0e0dac504cf885558.tar.bz2
perlweeklychallenge-club-61ed1965dca92005b484ecc0e0dac504cf885558.zip
Merge pull request #12693 from deadmarshal/TWC339
TWC339
-rw-r--r--challenge-339/deadmarshal/blog.txt1
-rw-r--r--challenge-339/deadmarshal/erlang/ch1.erl20
-rw-r--r--challenge-339/deadmarshal/erlang/ch2.erl23
-rw-r--r--challenge-339/deadmarshal/go/ch1.go20
-rw-r--r--challenge-339/deadmarshal/go/ch2.go22
-rw-r--r--challenge-339/deadmarshal/haskell/ch1.hs20
-rw-r--r--challenge-339/deadmarshal/haskell/ch2.hs13
-rw-r--r--challenge-339/deadmarshal/java/Ch1.java17
-rw-r--r--challenge-339/deadmarshal/java/Ch2.java21
-rw-r--r--challenge-339/deadmarshal/odin/ch1.odin18
-rw-r--r--challenge-339/deadmarshal/odin/ch2.odin21
-rw-r--r--challenge-339/deadmarshal/perl/ch-1.pl16
-rw-r--r--challenge-339/deadmarshal/perl/ch-2.pl16
-rw-r--r--challenge-339/deadmarshal/raku/ch-1.raku14
-rw-r--r--challenge-339/deadmarshal/raku/ch-2.raku13
-rw-r--r--challenge-339/deadmarshal/scheme/ch1.scm16
-rw-r--r--challenge-339/deadmarshal/scheme/ch2.scm19
17 files changed, 290 insertions, 0 deletions
diff --git a/challenge-339/deadmarshal/blog.txt b/challenge-339/deadmarshal/blog.txt
new file mode 100644
index 0000000000..c133ac5939
--- /dev/null
+++ b/challenge-339/deadmarshal/blog.txt
@@ -0,0 +1 @@
+https://deadmarshal.blogspot.com/2025/09/twc339.html
diff --git a/challenge-339/deadmarshal/erlang/ch1.erl b/challenge-339/deadmarshal/erlang/ch1.erl
new file mode 100644
index 0000000000..a76fbeec77
--- /dev/null
+++ b/challenge-339/deadmarshal/erlang/ch1.erl
@@ -0,0 +1,20 @@
+-module(ch1).
+-export([max_diff/1,main/0]).
+
+-spec max_diff([integer()]) -> integer().
+max_diff([]) -> undefined;
+max_diff(L) ->
+ N = length(L),
+ S = lists:sort(L),
+ E = lists:last(S) * lists:nth(N-1,S),
+ F = hd(S) * lists:nth(2,S),
+ E - F.
+
+main() ->
+ io:format("~p~n~p~n~p~n~p~n~p~n",
+ [max_diff([5,9,3,4,6]),
+ max_diff([1,-2,3,-4]),
+ max_diff([-3,-1,-2,-4]),
+ max_diff([10,2,0,5,1]),
+ max_diff([7,8,9,10,10])]).
+
diff --git a/challenge-339/deadmarshal/erlang/ch2.erl b/challenge-339/deadmarshal/erlang/ch2.erl
new file mode 100644
index 0000000000..9cc1579046
--- /dev/null
+++ b/challenge-339/deadmarshal/erlang/ch2.erl
@@ -0,0 +1,23 @@
+-module(ch2).
+-export([peak_point/1,main/0]).
+
+scanl(F,Init,L) ->
+ {Res,_} = lists:foldl(
+ fun(X,{AccList,Current}) ->
+ Next = F(Current,X),
+ {[Next|AccList],Next}
+ end,
+ {[Init],Init},L),
+ lists:reverse(Res).
+
+peak_point(L) ->
+ lists:max(scanl(fun erlang:'+'/2,0,L)).
+
+main() ->
+ io:format("~p~n~p~n~p~n~p~n~p~n",
+ [peak_point([-5,1,5,-9,2]),
+ peak_point([10,10,10,-25]),
+ peak_point([3,-4,2,5,-6,1]),
+ peak_point([-1,-2,-3,-4]),
+ peak_point([-10,15,5])]).
+
diff --git a/challenge-339/deadmarshal/go/ch1.go b/challenge-339/deadmarshal/go/ch1.go
new file mode 100644
index 0000000000..8425726384
--- /dev/null
+++ b/challenge-339/deadmarshal/go/ch1.go
@@ -0,0 +1,20 @@
+package main
+
+import (
+ "fmt"
+ "slices"
+)
+
+func maxDiff(arr []int) int {
+ slices.Sort(arr)
+ n := len(arr)
+ return arr[n-1]*arr[n-2] - arr[0]*arr[1]
+}
+
+func main() {
+ fmt.Println(maxDiff([]int{5, 9, 3, 4, 6}))
+ fmt.Println(maxDiff([]int{1, -2, 3, -4}))
+ fmt.Println(maxDiff([]int{-3, -1, -2, -4}))
+ fmt.Println(maxDiff([]int{10, 2, 0, 5, 1}))
+ fmt.Println(maxDiff([]int{7, 8, 9, 10, 10}))
+}
diff --git a/challenge-339/deadmarshal/go/ch2.go b/challenge-339/deadmarshal/go/ch2.go
new file mode 100644
index 0000000000..ffa8facb75
--- /dev/null
+++ b/challenge-339/deadmarshal/go/ch2.go
@@ -0,0 +1,22 @@
+package main
+
+import (
+ "fmt"
+ "slices"
+)
+
+func peakPoint(arr []int) int {
+ res := []int{0}
+ for _, e := range arr {
+ res = append(res, res[len(res)-1]+e)
+ }
+ return slices.Max(res)
+}
+
+func main() {
+ fmt.Println(peakPoint([]int{-5, 1, 5, -9, 2}))
+ fmt.Println(peakPoint([]int{10, 10, 10, -25}))
+ fmt.Println(peakPoint([]int{3, -4, 2, 5, -6, 1}))
+ fmt.Println(peakPoint([]int{-1, -2, -3, -4}))
+ fmt.Println(peakPoint([]int{-10, 15, 5}))
+}
diff --git a/challenge-339/deadmarshal/haskell/ch1.hs b/challenge-339/deadmarshal/haskell/ch1.hs
new file mode 100644
index 0000000000..a807f76894
--- /dev/null
+++ b/challenge-339/deadmarshal/haskell/ch1.hs
@@ -0,0 +1,20 @@
+module Ch1 where
+
+import Data.List
+
+maxDiff :: [Int] -> Int
+maxDiff xs = e - f
+ where
+ e = (s !! (len-1)) * (s !! (len-2))
+ f = head s * (s !! 1)
+ len = length s
+ s = sort xs
+
+main :: IO ()
+main = do
+ print $ maxDiff [5,9,3,4,6]
+ print $ maxDiff [1,-2,3,-4]
+ print $ maxDiff [-3,-1,-2,-4]
+ print $ maxDiff [10,2,0,5,1]
+ print $ maxDiff [7,8,9,10,10]
+
diff --git a/challenge-339/deadmarshal/haskell/ch2.hs b/challenge-339/deadmarshal/haskell/ch2.hs
new file mode 100644
index 0000000000..226efad940
--- /dev/null
+++ b/challenge-339/deadmarshal/haskell/ch2.hs
@@ -0,0 +1,13 @@
+module Ch2 where
+
+peakPoint :: Integral a => [a] -> a
+peakPoint = maximum . scanl (+) 0
+
+main :: IO ()
+main = do
+ print $ peakPoint [-5,1,5,-9,2]
+ print $ peakPoint [10,10,10,-25]
+ print $ peakPoint [3,-4,2,5,-6,1]
+ print $ peakPoint [-1,-2,-3,-4]
+ print $ peakPoint [-10,15,5]
+
diff --git a/challenge-339/deadmarshal/java/Ch1.java b/challenge-339/deadmarshal/java/Ch1.java
new file mode 100644
index 0000000000..c2b5bf781c
--- /dev/null
+++ b/challenge-339/deadmarshal/java/Ch1.java
@@ -0,0 +1,17 @@
+import java.util.Arrays;
+
+public class Ch1 {
+ public static void main(String[] args) {
+ System.out.println(max_diff(new int[] { 5, 9, 3, 4, 6 }));
+ System.out.println(max_diff(new int[] { 1, -2, 3, -4 }));
+ System.out.println(max_diff(new int[] { -3, -1, -2, -4 }));
+ System.out.println(max_diff(new int[] { 10, 2, 0, 5, 1 }));
+ System.out.println(max_diff(new int[] { 7, 8, 9, 10, 10 }));
+ }
+
+ private static int max_diff(int[] arr) {
+ Arrays.sort(arr);
+ final int n = arr.length;
+ return arr[n - 1] * arr[n - 2] - arr[0] * arr[1];
+ }
+}
diff --git a/challenge-339/deadmarshal/java/Ch2.java b/challenge-339/deadmarshal/java/Ch2.java
new file mode 100644
index 0000000000..22d7449bd0
--- /dev/null
+++ b/challenge-339/deadmarshal/java/Ch2.java
@@ -0,0 +1,21 @@
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+
+public class Ch2 {
+ public static void main(String[] args) {
+ System.out.println(peak_point(new int[] { -5, 1, 5, -9, 2 }));
+ System.out.println(peak_point(new int[] { 10, 10, 10, -25 }));
+ System.out.println(peak_point(new int[] { 3, -4, 2, 5, -6, 1 }));
+ System.out.println(peak_point(new int[] { -1, -2, -3, -4 }));
+ System.out.println(peak_point(new int[] { -10, 15, 5 }));
+ }
+
+ private static int peak_point(int[] arr) {
+ List<Integer> l = new ArrayList<>();
+ l.add(0);
+ for (var e : arr)
+ l.add(l.getLast() + e);
+ return Collections.max(l);
+ }
+}
diff --git a/challenge-339/deadmarshal/odin/ch1.odin b/challenge-339/deadmarshal/odin/ch1.odin
new file mode 100644
index 0000000000..9f0ab1b6e6
--- /dev/null
+++ b/challenge-339/deadmarshal/odin/ch1.odin
@@ -0,0 +1,18 @@
+package main
+
+import "core:fmt"
+import "core:slice"
+
+max_diff :: proc(arr: []int) -> int {
+ slice.sort(arr)
+ n := len(arr)
+ return arr[n - 1] * arr[n - 2] - arr[0] * arr[1]
+}
+
+main :: proc() {
+ fmt.println(max_diff([]int{5, 9, 3, 4, 6}))
+ fmt.println(max_diff([]int{1, -2, 3, -4}))
+ fmt.println(max_diff([]int{-3, -1, -2, -4}))
+ fmt.println(max_diff([]int{10, 2, 0, 5, 1}))
+ fmt.println(max_diff([]int{7, 8, 9, 10, 10}))
+}
diff --git a/challenge-339/deadmarshal/odin/ch2.odin b/challenge-339/deadmarshal/odin/ch2.odin
new file mode 100644
index 0000000000..1d502900d6
--- /dev/null
+++ b/challenge-339/deadmarshal/odin/ch2.odin
@@ -0,0 +1,21 @@
+package main
+
+import "core:fmt"
+import "core:slice"
+
+peak_point :: proc(arr: []int) -> int {
+ res := [dynamic]int{}
+ defer delete(res)
+ reserve(&res, len(arr))
+ append_elem(&res, 0)
+ for e, _ in arr do append_elem(&res, res[len(res) - 1] + e)
+ return slice.max(res[:])
+}
+
+main :: proc() {
+ fmt.println(peak_point([]int{-5, 1, 5, -9, 2}))
+ fmt.println(peak_point([]int{10, 10, 10, -25}))
+ fmt.println(peak_point([]int{3, -4, 2, 5, -6, 1}))
+ fmt.println(peak_point([]int{-1, -2, -3, -4}))
+ fmt.println(peak_point([]int{-10, 15, 5}))
+}
diff --git a/challenge-339/deadmarshal/perl/ch-1.pl b/challenge-339/deadmarshal/perl/ch-1.pl
new file mode 100644
index 0000000000..d846d1156e
--- /dev/null
+++ b/challenge-339/deadmarshal/perl/ch-1.pl
@@ -0,0 +1,16 @@
+#!/usr/bin/env perl
+use strict;
+use warnings;
+
+sub max_diff{
+ my ($arr) = @_;
+ @$arr = sort{$a <=> $b} @$arr;
+ $arr->[-1] * $arr->[-2] - $arr->[0] * $arr->[1]
+}
+
+printf "%d\n",max_diff([5,9,3,4,6]);
+printf "%d\n",max_diff([1,-2,3,-4]);
+printf "%d\n",max_diff([-3,-1,-2,-4]);
+printf "%d\n",max_diff([10,2,0,5,1]);
+printf "%d\n",max_diff([7,8,9,10,10]);
+
diff --git a/challenge-339/deadmarshal/perl/ch-2.pl b/challenge-339/deadmarshal/perl/ch-2.pl
new file mode 100644
index 0000000000..e37833f1a9
--- /dev/null
+++ b/challenge-339/deadmarshal/perl/ch-2.pl
@@ -0,0 +1,16 @@
+#!/usr/bin/env perl
+use strict;
+use warnings;
+use List::Util qw(max);
+
+sub peak_point{
+ my $s = 0;
+ max 0,map {$s += $_} @{$_[0]}
+}
+
+printf "%d\n",peak_point([-5,1,5,-9,2]);
+printf "%d\n",peak_point([10,10,10,-25]);
+printf "%d\n",peak_point([3,-4,2,5,-6,1]);
+printf "%d\n",peak_point([-1,-2,-3,-4]);
+printf "%d\n",peak_point([-10,15,5]);
+
diff --git a/challenge-339/deadmarshal/raku/ch-1.raku b/challenge-339/deadmarshal/raku/ch-1.raku
new file mode 100644
index 0000000000..87897b8bef
--- /dev/null
+++ b/challenge-339/deadmarshal/raku/ch-1.raku
@@ -0,0 +1,14 @@
+#!/usr/bin/env raku
+
+sub max-diff(@arr)
+{
+ my @s = @arr.sort;
+ ([*] @s.tail(2)) - ([*] @s.head(2))
+}
+
+say max-diff([5,9,3,4,6]);
+say max-diff([1,-2,3,-4]);
+say max-diff([-3,-1,-2,-4]);
+say max-diff([10,2,0,5,1]);
+say max-diff([7,8,9,10,10]);
+
diff --git a/challenge-339/deadmarshal/raku/ch-2.raku b/challenge-339/deadmarshal/raku/ch-2.raku
new file mode 100644
index 0000000000..ad4cf38d07
--- /dev/null
+++ b/challenge-339/deadmarshal/raku/ch-2.raku
@@ -0,0 +1,13 @@
+#!/usr/bin/env raku
+
+sub peak-point(@arr)
+{
+ ([\+] (0,|@arr)).max
+}
+
+say peak-point([-5,1,5,-9,2]);
+say peak-point([10,10,10,-25]);
+say peak-point([3,-4,2,5,-6,1]);
+say peak-point([-1,-2,-3,-4]);
+say peak-point([-10,15,5]);
+
diff --git a/challenge-339/deadmarshal/scheme/ch1.scm b/challenge-339/deadmarshal/scheme/ch1.scm
new file mode 100644
index 0000000000..96b1a81e5f
--- /dev/null
+++ b/challenge-339/deadmarshal/scheme/ch1.scm
@@ -0,0 +1,16 @@
+(define (max-diff xs)
+ (let* ((s (sort < xs))
+ (n (length xs))
+ (e (* (list-ref s (sub1 n))
+ (list-ref s (- n 2))))
+ (f (* (car s)
+ (list-ref s 1))))
+ (- e f)))
+
+(begin
+ (display (max-diff '(5 9 3 4 6))) (newline)
+ (display (max-diff '(1 -2 3 -4))) (newline)
+ (display (max-diff '(-3 -1 -2 -4))) (newline)
+ (display (max-diff '(10 2 0 5 1))) (newline)
+ (display (max-diff '(7 8 9 10 10))) (newline))
+
diff --git a/challenge-339/deadmarshal/scheme/ch2.scm b/challenge-339/deadmarshal/scheme/ch2.scm
new file mode 100644
index 0000000000..83905c1250
--- /dev/null
+++ b/challenge-339/deadmarshal/scheme/ch2.scm
@@ -0,0 +1,19 @@
+(define (scanl f init xs)
+ (let loop ((acc init)
+ (rest xs)
+ (result (list init)))
+ (if (null? rest)
+ (reverse result)
+ (let ((next (f acc (car rest))))
+ (loop next (cdr rest) (cons next result))))))
+
+(define (peak-point xs)
+ (apply max (scanl + 0 xs)))
+
+(begin
+ (display (peak-point '(-5 1 5 -9 2))) (newline)
+ (display (peak-point '(10 10 10 -25))) (newline)
+ (display (peak-point '(3 -4 2 5 -6 1))) (newline)
+ (display (peak-point '(-1 -2 -3 -4))) (newline)
+ (display (peak-point '(-10 15 5))) (newline))
+