mirror of
https://github.com/guezoloic/game-of-life.git
synced 2026-01-25 09:34:07 +00:00
fix(count, display): swapped x/y and i/j coordinates
- count: fixed (i, j) mixup and added >= 0 to both bounds check - generation: swapped HEIGHT and WIDTH in loop order
This commit is contained in:
25
src/main.rs
25
src/main.rs
@@ -16,6 +16,8 @@ fn display(grid: &[[bool; WIDTH]; HEIGHT], buffer: &mut String) {
|
||||
}
|
||||
|
||||
fn count(grid: &[[bool; WIDTH]; HEIGHT], x: usize, y: usize) -> u8 {
|
||||
|
||||
// (i, j) coordinate
|
||||
let near:[(isize, isize); 8] = [
|
||||
(-1, -1), (-1, 0), (-1, 1),
|
||||
(0, -1), (0, 1),
|
||||
@@ -25,13 +27,13 @@ fn count(grid: &[[bool; WIDTH]; HEIGHT], x: usize, y: usize) -> u8 {
|
||||
let mut count = 0;
|
||||
|
||||
for (i, j) in near {
|
||||
let nx: isize = x as isize + i;
|
||||
let ny: isize = y as isize + j;
|
||||
let nx: isize = x as isize + j;
|
||||
let ny: isize = y as isize + i;
|
||||
|
||||
if (nx > 0 && (WIDTH as isize) > nx &&
|
||||
ny > 0 && (HEIGHT as isize) > ny) {
|
||||
if nx >= 0 && (WIDTH as isize) > nx &&
|
||||
ny >= 0 && (HEIGHT as isize) > ny {
|
||||
|
||||
if (grid[nx as usize][nx as usize]) {
|
||||
if grid[ny as usize][nx as usize] {
|
||||
count += 1;
|
||||
}
|
||||
}
|
||||
@@ -43,10 +45,10 @@ fn count(grid: &[[bool; WIDTH]; HEIGHT], x: usize, y: usize) -> u8 {
|
||||
fn generation(grid: &[[bool; WIDTH]; HEIGHT]) -> [[bool; WIDTH]; HEIGHT] {
|
||||
let mut new_grid = [[false; WIDTH]; HEIGHT];
|
||||
|
||||
for x in 0..HEIGHT {
|
||||
for y in 0..WIDTH {
|
||||
for y in 0..HEIGHT {
|
||||
for x in 0..WIDTH {
|
||||
let count = count(grid, x, y);
|
||||
new_grid[x][y] = match (grid[x][y], count) {
|
||||
new_grid[y][x] = match (grid[y][x], count) {
|
||||
(true, 2) | (true, 3) => true,
|
||||
(false, 3) => true,
|
||||
_ => false,
|
||||
@@ -61,8 +63,15 @@ fn main() {
|
||||
let mut grid: [[bool; WIDTH]; HEIGHT] = [[false; WIDTH]; HEIGHT];
|
||||
let mut buffer: String = String::new();
|
||||
|
||||
// grid[14][13] = true;
|
||||
// grid[15][14] = true;
|
||||
// grid[13][15] = true;
|
||||
// grid[14][15] = true;
|
||||
// grid[15][15] = true;
|
||||
|
||||
loop {
|
||||
display(&grid, &mut buffer);
|
||||
grid = generation(&grid);
|
||||
std::thread::sleep(std::time::Duration::from_millis(500));
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user