diff options
| author | Federico Igne <git@federicoigne.com> | 2020-12-26 17:48:38 +0000 |
|---|---|---|
| committer | Federico Igne <git@federicoigne.com> | 2021-11-03 18:55:08 +0000 |
| commit | 02481656966b0a8dfc95cf3c22bcc049660ff7d4 (patch) | |
| tree | 8e39798fcaf27931d91c2088423fd4e97adcfc2d /rust/saddle-points/src/lib.rs | |
| parent | 4e2052c4d792540c2f742b2c2a081b11117ed41d (diff) | |
| download | exercism-02481656966b0a8dfc95cf3c22bcc049660ff7d4.tar.gz exercism-02481656966b0a8dfc95cf3c22bcc049660ff7d4.zip | |
Move Rust exercises in a subdirectory
Diffstat (limited to 'rust/saddle-points/src/lib.rs')
| -rw-r--r-- | rust/saddle-points/src/lib.rs | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/rust/saddle-points/src/lib.rs b/rust/saddle-points/src/lib.rs new file mode 100644 index 0000000..7123243 --- /dev/null +++ b/rust/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 | } | ||
