Skip to content

Instantly share code, notes, and snippets.

@snewcomer
Created June 3, 2021 18:58
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save snewcomer/85b45f738b9a9fddcc6c0d7193e1ca91 to your computer and use it in GitHub Desktop.
Save snewcomer/85b45f738b9a9fddcc6c0d7193e1ca91 to your computer and use it in GitHub Desktop.
Interview Question in Rust!!
fn find_positive_sum(vec: &Vec<[i32; 5]>, coords: Vec<(i32, i32)>) -> i32 {
let mut sum = 0;
let mut coords_sorted = coords.clone();
coords_sorted.sort(); // sort to get duplicates as neighbors
coords_sorted.dedup();
for (x, y) in coords_sorted.iter() {
if let Some(inner) = vec.get(*y as usize) { // Some(inner) or None
if let Some(inner_x) = inner.get(*x as usize) { // Some(inner) or None
sum += inner_x;
}
}
}
sum
}
fn find_diagonal(vec: &Vec<[u32; 5]>, starting_point: (usize, usize)) -> Vec<u32> {
// backwards
let mut x = starting_point.0;
let mut y = starting_point.1;
let mut result = vec![];
loop {
if x < 1 {
break; // overflow
}
if y < 1 {
break;
}
x = x - 1;
y = y - 1;
result.push(vec[y][x]);
}
result.push(vec[starting_point.1][starting_point.0]);
// forwards
let mut x = starting_point.0;
let mut y = starting_point.1;
loop {
if x > vec[0].len() - 1 { // x length = 5;
break; // overflow
}
if y >= vec.len() - 1 { // y == 3
break;
}
dbg!(x, y, vec.len());
x = x + 1;
y = y + 1;
result.push(vec[y][x]);
}
result
}
fn main() {
let vec = vec![
[3, 5, 1, 8, 2],
[4, 9, 7, 2, 1],
[1, 6, 6, 2, 8],
[5, 4, 9, 1, 3],
];
let res = find_positive_sum(&vec, vec![(1, 3), (4, 0), (2,2), (1,3), (4, 0), (4, 0)]);
dbg!(res);
let res = find_positive_sum(&vec, vec![(1, 4)]);
dbg!(res);
let res = find_positive_sum(&vec, vec![(5, 3)]);
dbg!(res);
let res = find_positive_sum(&vec, vec![(-1, 3)]);
dbg!(res);
let vec = vec![
[3, 5, 1, 8, 2],
[4, 9, 7, 2, 1],
[1, 6, 6, 2, 8],
[5, 4, 9, 1, 3],
];
let res = find_diagonal(&vec, (1, 3));
dbg!(res);
let res = find_diagonal(&vec, (1, 1));
dbg!(res);
let res = find_diagonal(&vec, (2, 1));
dbg!(res);
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment