From 4fbad684c1d8546597dc3bb2807f9a8e8004a7cd Mon Sep 17 00:00:00 2001 From: hollorol Date: Tue, 3 Dec 2024 09:36:48 +0100 Subject: [PATCH] Toroidal grid is a better approach --- Makefile | 6 ++++++ main.c | 63 +++++++++++++++----------------------------------------- 2 files changed, 23 insertions(+), 46 deletions(-) diff --git a/Makefile b/Makefile index 88cd3cf..c630fbc 100644 --- a/Makefile +++ b/Makefile @@ -1,2 +1,8 @@ conway: main.c gcc -o conway main.c -lncurses -lm +install: + cp conway $(HOME)/.local/bin +uninstall: + rm $(HOME)/.local/bin/conway + +.PHONY: install uninstall diff --git a/main.c b/main.c index a846207..f60ad30 100644 --- a/main.c +++ b/main.c @@ -250,53 +250,24 @@ void simulate() { for(int i = 0; i < 50; ++i){ for(int j = 0; j < 120; ++j){ - if(j-1 <0){ - left_neighbour = 0; - } else { - left_neighbour = conwayMatrix[i][j-1]; - } - if(j+1 > 119){ - right_neighbour = 0; - } else { - right_neighbour = conwayMatrix[i][j+1]; - } - if(i-1 < 0){ - top_neighbour = 0; - } else { - top_neighbour = conwayMatrix[i-1][j]; - } - if(i+1 > 49){ - bottom_neighbour = 0; - } else { - bottom_neighbour = conwayMatrix[i+1][j]; - } - // topleft - if(i-1 < 0 || j-1 < 0){ - topleft_neighbour = 0; - } else { - topleft_neighbour = conwayMatrix[i-1][j-1]; - } - // topright - if(i-1 < 0 || j+1 > 119){ - topright_neighbour = 0; - } else { - topright_neighbour = conwayMatrix[i-1][j+1]; - } - // bottomleft - if(i+1 > 49 || j-1 < 0){ - bottomleft_neighbour = 0; - } else { - bottomleft_neighbour = conwayMatrix[i+1][j-1]; - } - // bottomright - - if(i+1 > 49 || j+1 > 119){ - bottomright_neighbour = 0; - } else { - bottomright_neighbour = conwayMatrix[i+1][j+1]; - } + left_neighbour = conwayMatrix[i][((j-1) +120) % 120]; + right_neighbour = conwayMatrix[i][(j+1) % 120]; + top_neighbour = conwayMatrix[((i-1) + 50) % 50][j]; + bottom_neighbour = conwayMatrix[(i+1) % 50][j]; + topleft_neighbour = conwayMatrix[((i-1) + 50) % 50][((j-1) + 120) % 120]; + topright_neighbour = conwayMatrix[((i-1) + 50) % 50][(j+1) % 120]; + bottomleft_neighbour = conwayMatrix[(i+1) % 50][((j-1) + 120) % 120]; + bottomright_neighbour = conwayMatrix[(i+1)%50][(j+1)%50]; + + num_neighbours = left_neighbour + + right_neighbour + + top_neighbour + + bottom_neighbour + + topleft_neighbour + + topright_neighbour + + bottomleft_neighbour + + bottomright_neighbour; - num_neighbours = left_neighbour + right_neighbour + top_neighbour + bottom_neighbour + topleft_neighbour + topright_neighbour + bottomleft_neighbour + bottomright_neighbour; tempMatrix[i][j] = conwayMatrix[i][j]; if((num_neighbours < 2) && (conwayMatrix[i][j] == 1)){ /* tempMatrix[i][j] = probdie(10); */