aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--challenge-076/xkr47/rust/ch-2.rs7
1 files changed, 4 insertions, 3 deletions
diff --git a/challenge-076/xkr47/rust/ch-2.rs b/challenge-076/xkr47/rust/ch-2.rs
index ab6f8b75ae..d052e9bbb3 100644
--- a/challenge-076/xkr47/rust/ch-2.rs
+++ b/challenge-076/xkr47/rust/ch-2.rs
@@ -61,7 +61,7 @@ impl SearchGrid {
let left_coords = (0..self.height).map(|y| (0isize, y)).collect::<Vec<_>>();
let top_coords = (0..self.width).map(|x| (x, 0isize)).collect::<Vec<_>>();
- let bottom_coords = (0..self.width).map(|x| (x, self.height - 1)).collect::<Vec<(isize, isize)>>();
+ let bottom_coords = (0..self.width).map(|x| (x, self.height - 1)).collect::<Vec<_>>();
let mut strings = left_coords.iter().skip(1).map(|coord| self.string_from(coord, (1, -1))).collect::<Vec<String>>();
strings.extend(left_coords.iter().map(|coord| self.string_from(coord, (1, 0))));
@@ -78,8 +78,9 @@ impl SearchGrid {
}
fn string_from(&self, (xstart, ystart): &(isize, isize), (xinc, yinc): (isize, isize)) -> String {
- let x_coords = (0..self.width).map(|pos| xstart + (xinc * pos));
- let y_coords = (0..self.height).map(|pos| ystart + (yinc * pos));
+ let max_extent = self.width.max(self.height);
+ let x_coords = (0..max_extent).map(|pos| xstart + (xinc * pos));
+ let y_coords = (0..max_extent).map(|pos| ystart + (yinc * pos));
x_coords.zip(y_coords)
.filter(|(x,y)| *x >= 0 && *y >= 0 && *x < self.width && *y < self.height)
.map(|(x,y)| self.grid[y as usize][x as usize])