aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBenjamin Andre <benjaminandre23@gmail.com>2025-08-14 15:19:51 +0200
committerBenjamin Andre <benjaminandre23@gmail.com>2025-08-14 15:19:51 +0200
commitab5902284bfa71a578bdb2602d0551d9db37dc99 (patch)
tree4187762e4880ee9b566cce427e05db4baa7ef8e8
parent9ec12b6be9ab811c70b1a5e7a438b53934b39177 (diff)
downloadperlweeklychallenge-club-ab5902284bfa71a578bdb2602d0551d9db37dc99.tar.gz
perlweeklychallenge-club-ab5902284bfa71a578bdb2602d0551d9db37dc99.tar.bz2
perlweeklychallenge-club-ab5902284bfa71a578bdb2602d0551d9db37dc99.zip
feat(334): completed both challenges
-rwxr-xr-xchallenge-334/benjamin-andre/rust/ch-1.rs15
-rwxr-xr-xchallenge-334/benjamin-andre/rust/ch-2.rs33
2 files changed, 48 insertions, 0 deletions
diff --git a/challenge-334/benjamin-andre/rust/ch-1.rs b/challenge-334/benjamin-andre/rust/ch-1.rs
new file mode 100755
index 0000000000..97b4b164dd
--- /dev/null
+++ b/challenge-334/benjamin-andre/rust/ch-1.rs
@@ -0,0 +1,15 @@
+#!/bin/sh
+//usr/bin/env rustc --test $0 -o kachow && ./kachow --nocapture; rm -f kachow ; exit
+
+fn range_sum(ints: &[i32], x: usize, y: usize) -> i32 {
+ ints[x..=y].iter().sum()
+}
+
+#[test]
+fn example() {
+ assert_eq!(range_sum(&[-2, 0, 3, -5, 2, -1], 0, 2), 1);
+ assert_eq!(range_sum(&[1, -2, 3, -4, 5], 1, 3), -3);
+ assert_eq!(range_sum(&[1, 0, 2, -1, 3], 3, 4), 2);
+ assert_eq!(range_sum(&[-5, 4, -3, 2, -1, 0], 0, 3), -2);
+ assert_eq!(range_sum(&[-1, 0, 2, -3, -2, 1], 0, 2), 1);
+}
diff --git a/challenge-334/benjamin-andre/rust/ch-2.rs b/challenge-334/benjamin-andre/rust/ch-2.rs
new file mode 100755
index 0000000000..4c7c4024d4
--- /dev/null
+++ b/challenge-334/benjamin-andre/rust/ch-2.rs
@@ -0,0 +1,33 @@
+#!/bin/sh
+//usr/bin/env rustc --test $0 -o kachow && ./kachow --nocapture; rm -f kachow ; exit
+
+fn nearest_valid_point(x: i32, y: i32, points: &[[i32; 2]]) -> i32 {
+ points
+ .iter()
+ .enumerate()
+ .filter(|(_, &[px, py])| px == x || py == y)
+ .map(|(i, &[px, py])| (i, (x - px).abs() + (y - py).abs()))
+ .min_by_key(|&(_, dist)| dist)
+ .map_or(-1, |(i, _)| i as i32)
+}
+
+#[test]
+fn example() {
+ assert_eq!(
+ nearest_valid_point(3, 4, &[[1, 2], [3, 1], [2, 4], [2, 3]]),
+ 2
+ );
+ assert_eq!(
+ nearest_valid_point(2, 5, &[[3, 4], [2, 3], [1, 5], [2, 5]]),
+ 3
+ );
+ assert_eq!(nearest_valid_point(1, 1, &[[2, 2], [3, 3], [4, 4]]), -1);
+ assert_eq!(
+ nearest_valid_point(0, 0, &[[0, 1], [1, 0], [0, 2], [2, 0]]),
+ 0
+ );
+ assert_eq!(
+ nearest_valid_point(5, 5, &[[5, 6], [6, 5], [5, 4], [4, 5]]),
+ 0
+ );
+}