diff options
| author | Benjamin Andre <benjaminandre23@gmail.com> | 2025-08-14 15:19:51 +0200 |
|---|---|---|
| committer | Benjamin Andre <benjaminandre23@gmail.com> | 2025-08-14 15:19:51 +0200 |
| commit | ab5902284bfa71a578bdb2602d0551d9db37dc99 (patch) | |
| tree | 4187762e4880ee9b566cce427e05db4baa7ef8e8 | |
| parent | 9ec12b6be9ab811c70b1a5e7a438b53934b39177 (diff) | |
| download | perlweeklychallenge-club-ab5902284bfa71a578bdb2602d0551d9db37dc99.tar.gz perlweeklychallenge-club-ab5902284bfa71a578bdb2602d0551d9db37dc99.tar.bz2 perlweeklychallenge-club-ab5902284bfa71a578bdb2602d0551d9db37dc99.zip | |
feat(334): completed both challenges
| -rwxr-xr-x | challenge-334/benjamin-andre/rust/ch-1.rs | 15 | ||||
| -rwxr-xr-x | challenge-334/benjamin-andre/rust/ch-2.rs | 33 |
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 + ); +} |
