/*
Create a sorted unique vec (vec) from a matrix (arr of arr).
Steps:
1. Flatten matrix into vec
2. Sort vec (sort)
3. Remove duplicates (dedup)
*/
fn make_sorted_unique_vec(mat: [[i32; 8]; 3], rows: usize, cols: usize) -> Vec<i32> {
// Allocate vec with explicit numeric parameters
let mut vec = Vec::with_capacity(rows * cols);
// Flatten matrix into vec
for row in mat {
for x in row {
vec.push(x);
}
}
// Sort vec
vec.sort();
// Remove duplicates
vec.dedup();
vec
}
fn main() {
let mat = [
[5, 1, 17, 3, 8, 2, 1, 9],
[3, 5, 7, 4, 2, 3, 4, 1],
[9, 1, 8, 2, 3, 88, 17, 5],
];
// Pass 3 and 8 explicitly
let vec = make_sorted_unique_vec(mat, 3, 8);
for x in vec {
print!("{} ", x);
}
}
/*
run:
1 2 3 4 5 7 8 9 17 88
*/