diff options
| author | Federico Igne <git@federicoigne.com> | 2020-07-13 09:20:52 +0200 |
|---|---|---|
| committer | Federico Igne <git@federicoigne.com> | 2021-11-03 18:55:08 +0000 |
| commit | 99dbef8747116ae11b6e601af0187a72447dd021 (patch) | |
| tree | 6e90a2420262624a1309241d978acf8ee79cc52f /saddle-points/src | |
| parent | 354a0ed1725ae5408e097164714599b6b1bb66c8 (diff) | |
| download | exercism-99dbef8747116ae11b6e601af0187a72447dd021.tar.gz exercism-99dbef8747116ae11b6e601af0187a72447dd021.zip | |
[rust] Saddle Points
Diffstat (limited to 'saddle-points/src')
| -rw-r--r-- | saddle-points/src/lib.rs | 16 |
1 files changed, 16 insertions, 0 deletions
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 @@ | |||
| 1 | fn is_min(mat: &[Vec<u64>], col: usize, row: usize) -> bool { | ||
| 2 | (0..mat.len()).all(|r| mat[r][col] >= mat[row][col]) | ||
| 3 | } | ||
| 4 | |||
| 5 | pub fn find_saddle_points(input: &[Vec<u64>]) -> Vec<(usize, usize)> { | ||
| 6 | let mut res = vec![]; | ||
| 7 | for (row,relem) in input.iter().enumerate() { | ||
| 8 | let m = relem.iter().max(); | ||
| 9 | for (col,celem) in relem.iter().enumerate() { | ||
| 10 | if (m == Some(celem)) && is_min(input,col,row) { | ||
| 11 | res.push((row,col)); | ||
| 12 | } | ||
| 13 | } | ||
| 14 | } | ||
| 15 | res | ||
| 16 | } | ||
