From 99dbef8747116ae11b6e601af0187a72447dd021 Mon Sep 17 00:00:00 2001 From: Federico Igne Date: Mon, 13 Jul 2020 09:20:52 +0200 Subject: [rust] Saddle Points --- saddle-points/src/lib.rs | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) create mode 100644 saddle-points/src/lib.rs (limited to 'saddle-points/src') diff --git a/saddle-points/src/lib.rs b/saddle-points/src/lib.rs new file mode 100644 index 0000000..7123243 --- /dev/null +++ b/saddle-points/src/lib.rs @@ -0,0 +1,16 @@ +fn is_min(mat: &[Vec], col: usize, row: usize) -> bool { + (0..mat.len()).all(|r| mat[r][col] >= mat[row][col]) +} + +pub fn find_saddle_points(input: &[Vec]) -> Vec<(usize, usize)> { + let mut res = vec![]; + for (row,relem) in input.iter().enumerate() { + let m = relem.iter().max(); + for (col,celem) in relem.iter().enumerate() { + if (m == Some(celem)) && is_min(input,col,row) { + res.push((row,col)); + } + } + } + res +} -- cgit v1.2.3