[][src]Constant cauly_rust_leetcode_utils::GRID_SRC

pub const GRID_SRC: &'static str = "// #region Grid\npub struct Grid<T>\nwhere\n    T: Clone,\n{\n    width: usize,\n    height: usize,\n    values: Vec<Vec<T>>,\n}\n\npub struct GridItem<T>\nwhere\n    T: Clone,\n{\n    pub val: T,\n    pub x: usize,\n    pub y: usize,\n}\n\nimpl<T> Grid<T>\nwhere\n    T: Default,\n    T: Clone,\n{\n    pub fn new(width: usize, height: usize) -> Self {\n        Grid {\n            width,\n            height,\n            values: vec![vec![T::default(); width]; height],\n        }\n    }\n}\n\nimpl<T> Grid<T>\nwhere\n    T: Clone,\n{\n    pub fn from(grid: Vec<Vec<T>>) -> Self {\n        Grid {\n            width: grid[0].len(),\n            height: grid.len(),\n            values: grid,\n        }\n    }\n    pub fn get_near_4(&self, pos: (usize, usize)) -> Vec<GridItem<T>> {\n        let mut result = Vec::new();\n\n        if pos.0 > 0 {\n            result.push(GridItem {\n                x: pos.0 - 1,\n                y: pos.1,\n                val: self.values[pos.1][pos.0 - 1].clone(),\n            });\n        }\n        if pos.0 < self.width - 1 {\n            result.push(GridItem {\n                x: pos.0 + 1,\n                y: pos.1,\n                val: self.values[pos.1][pos.0 + 1].clone(),\n            });\n        }\n        if pos.1 > 0 {\n            result.push(GridItem {\n                x: pos.0,\n                y: pos.1 - 1,\n                val: self.values[pos.1 - 1][pos.0].clone(),\n            });\n        }\n        if pos.1 < self.height - 1 {\n            result.push(GridItem {\n                x: pos.0,\n                y: pos.1 + 1,\n                val: self.values[pos.1 + 1][pos.0].clone(),\n            });\n        }\n\n        result\n    }\n    pub fn is_near_4(&self, pos1: (usize, usize), pos2: (usize, usize)) -> bool {\n        let x = (pos1.0 as i32 - pos2.0 as i32).abs();\n        let y = (pos1.1 as i32 - pos2.1 as i32).abs();\n        x == 1 && y == 0 || x == 0 && y == 1\n    }\n}\n\n// #endregion\n";