diff options
| author | Benjamin Andre <benjaminandre23@gmail.com> | 2025-09-17 06:36:41 +0200 |
|---|---|---|
| committer | Benjamin Andre <benjaminandre23@gmail.com> | 2025-09-17 06:36:41 +0200 |
| commit | 917da4ddf1d5d1619506cedd3570f3956e2621de (patch) | |
| tree | f5fa99a4ed1d62dd64244298d842632ce91f2ef8 | |
| parent | f78ccc41e5c6cbc1a2c0f5823e6004b703e8ac0c (diff) | |
| download | perlweeklychallenge-club-917da4ddf1d5d1619506cedd3570f3956e2621de.tar.gz perlweeklychallenge-club-917da4ddf1d5d1619506cedd3570f3956e2621de.tar.bz2 perlweeklychallenge-club-917da4ddf1d5d1619506cedd3570f3956e2621de.zip | |
feat(339): completed
| -rwxr-xr-x | challenge-339/benjamin-andre/rust/ch-1.rs | 35 | ||||
| -rwxr-xr-x | challenge-339/benjamin-andre/rust/ch-2.rs | 21 |
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); +} |
