aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBenjamin Andre <benjaminandre23@gmail.com>2025-09-17 06:36:41 +0200
committerBenjamin Andre <benjaminandre23@gmail.com>2025-09-17 06:36:41 +0200
commit917da4ddf1d5d1619506cedd3570f3956e2621de (patch)
treef5fa99a4ed1d62dd64244298d842632ce91f2ef8
parentf78ccc41e5c6cbc1a2c0f5823e6004b703e8ac0c (diff)
downloadperlweeklychallenge-club-917da4ddf1d5d1619506cedd3570f3956e2621de.tar.gz
perlweeklychallenge-club-917da4ddf1d5d1619506cedd3570f3956e2621de.tar.bz2
perlweeklychallenge-club-917da4ddf1d5d1619506cedd3570f3956e2621de.zip
feat(339): completed
-rwxr-xr-xchallenge-339/benjamin-andre/rust/ch-1.rs35
-rwxr-xr-xchallenge-339/benjamin-andre/rust/ch-2.rs21
2 files changed, 56 insertions, 0 deletions
diff --git a/challenge-339/benjamin-andre/rust/ch-1.rs b/challenge-339/benjamin-andre/rust/ch-1.rs
new file mode 100755
index 0000000000..a37d384178
--- /dev/null
+++ b/challenge-339/benjamin-andre/rust/ch-1.rs
@@ -0,0 +1,35 @@
+#!/bin/sh
+//usr/bin/env rustc --test $0 -o kachow && ./kachow --nocapture; rm -f kachow ; exit
+
+fn max_diff(a: &[i32]) -> i32 {
+ let n = a.len();
+ let mut pairs = Vec::new();
+
+ for i in 0..n {
+ for j in i + 1..n {
+ pairs.push((a[i] * a[j], i, j));
+ }
+ }
+
+ let mut md = 0;
+ for i in 0..pairs.len() {
+ for j in i + 1..pairs.len() {
+ let (p1, x1, y1) = pairs[i];
+ let (p2, x2, y2) = pairs[j];
+ if x1 != x2 && x1 != y2 && y1 != x2 && y1 != y2 {
+ md = md.max((p1 - p2).abs());
+ }
+ }
+ }
+
+ md
+}
+
+#[test]
+fn example() {
+ assert_eq!(max_diff(&[5, 9, 3, 4, 6]), 42);
+ assert_eq!(max_diff(&[1, -2, 3, -4]), 10);
+ assert_eq!(max_diff(&[-3, -1, -2, -4]), 10);
+ assert_eq!(max_diff(&[10, 2, 0, 5, 1]), 50);
+ assert_eq!(max_diff(&[7, 8, 9, 10, 10]), 44);
+}
diff --git a/challenge-339/benjamin-andre/rust/ch-2.rs b/challenge-339/benjamin-andre/rust/ch-2.rs
new file mode 100755
index 0000000000..5f0a9e9b9e
--- /dev/null
+++ b/challenge-339/benjamin-andre/rust/ch-2.rs
@@ -0,0 +1,21 @@
+#!/bin/sh
+//usr/bin/env rustc --test $0 -o kachow && ./kachow --nocapture; rm -f kachow ; exit
+
+fn peak_point(gain: &[i32]) -> i32 {
+ let mut altitude = 0;
+ let mut peak = 0;
+ for &g in gain {
+ altitude += g;
+ peak = peak.max(altitude);
+ }
+ peak
+}
+
+#[test]
+fn example() {
+ assert_eq!(peak_point(&[-5, 1, 5, -9, 2]), 1);
+ assert_eq!(peak_point(&[10, 10, 10, -25]), 30);
+ assert_eq!(peak_point(&[3, -4, 2, 5, -6, 1]), 6);
+ assert_eq!(peak_point(&[-1, -2, -3, -4]), 0);
+ assert_eq!(peak_point(&[-10, 15, 5]), 10);
+}