Added remove_row() and remove_col()

This commit is contained in:
djkato 2023-04-17 23:01:50 +02:00 committed by Armin Becher
parent 6aa94cd87b
commit 5f5720fa6a

View file

@ -562,13 +562,9 @@ impl<T> Grid<T> {
/// use grid::*; /// use grid::*;
/// let mut grid = grid![[1,2][3,4][5,6]]; /// let mut grid = grid![[1,2][3,4][5,6]];
/// assert_eq![grid.remove_row(1), Some(vec![3,4])]; /// assert_eq![grid.remove_row(1), Some(vec![3,4])];
/// println!("grid: {:?}", grid);
/// assert_eq![grid.remove_row(0), Some(vec![1,2])]; /// assert_eq![grid.remove_row(0), Some(vec![1,2])];
/// println!("grid: {:?}", grid);
/// assert_eq![grid.remove_row(0), Some(vec![5,6])]; /// assert_eq![grid.remove_row(0), Some(vec![5,6])];
/// println!("grid: {:?}", grid);
/// assert_eq![grid.remove_row(0), None]; /// assert_eq![grid.remove_row(0), None];
/// println!("grid: {:?}", grid);
/// ``` /// ```
pub fn remove_row(&mut self, row_index: usize) -> Option<Vec<T>> { pub fn remove_row(&mut self, row_index: usize) -> Option<Vec<T>> {
if self.cols == 0 || self.rows == 0 || row_index > self.rows { if self.cols == 0 || self.rows == 0 || row_index > self.rows {
@ -628,26 +624,10 @@ impl<T> Grid<T> {
if self.cols == 0 || self.rows == 0 || col_index > self.cols { if self.cols == 0 || self.rows == 0 || col_index > self.cols {
return None; return None;
} }
println!(
"self.rows: {};row_index: {}, self.cols: {}",
self.rows, col_index, self.cols
);
let mut residue: Vec<T> = vec![]; let mut residue: Vec<T> = vec![];
for i in 0..self.rows { for i in 0..self.rows {
println!(
"{} * {} + {} - {} == {}",
i,
self.cols,
col_index,
i,
i * self.cols + col_index - i
);
residue.push(self.data.remove(i * self.cols + col_index - i));
}
/*
0 * 16 + 0 - 1 - 0
*/
self.cols -= 1; self.cols -= 1;
}
Some(residue) Some(residue)
} }