Toroidal grid is a better approach

This commit is contained in:
hollorol 2024-12-03 09:36:48 +01:00
parent b7536e462a
commit 4fbad684c1
2 changed files with 23 additions and 46 deletions

View File

@ -1,2 +1,8 @@
conway: main.c conway: main.c
gcc -o conway main.c -lncurses -lm gcc -o conway main.c -lncurses -lm
install:
cp conway $(HOME)/.local/bin
uninstall:
rm $(HOME)/.local/bin/conway
.PHONY: install uninstall

63
main.c
View File

@ -250,53 +250,24 @@ void simulate() {
for(int i = 0; i < 50; ++i){ for(int i = 0; i < 50; ++i){
for(int j = 0; j < 120; ++j){ for(int j = 0; j < 120; ++j){
if(j-1 <0){ left_neighbour = conwayMatrix[i][((j-1) +120) % 120];
left_neighbour = 0; right_neighbour = conwayMatrix[i][(j+1) % 120];
} else { top_neighbour = conwayMatrix[((i-1) + 50) % 50][j];
left_neighbour = conwayMatrix[i][j-1]; bottom_neighbour = conwayMatrix[(i+1) % 50][j];
} topleft_neighbour = conwayMatrix[((i-1) + 50) % 50][((j-1) + 120) % 120];
if(j+1 > 119){ topright_neighbour = conwayMatrix[((i-1) + 50) % 50][(j+1) % 120];
right_neighbour = 0; bottomleft_neighbour = conwayMatrix[(i+1) % 50][((j-1) + 120) % 120];
} else { bottomright_neighbour = conwayMatrix[(i+1)%50][(j+1)%50];
right_neighbour = conwayMatrix[i][j+1];
} num_neighbours = left_neighbour +
if(i-1 < 0){ right_neighbour +
top_neighbour = 0; top_neighbour +
} else { bottom_neighbour +
top_neighbour = conwayMatrix[i-1][j]; topleft_neighbour +
} topright_neighbour +
if(i+1 > 49){ bottomleft_neighbour +
bottom_neighbour = 0; bottomright_neighbour;
} 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];
}
num_neighbours = left_neighbour + right_neighbour + top_neighbour + bottom_neighbour + topleft_neighbour + topright_neighbour + bottomleft_neighbour + bottomright_neighbour;
tempMatrix[i][j] = conwayMatrix[i][j]; tempMatrix[i][j] = conwayMatrix[i][j];
if((num_neighbours < 2) && (conwayMatrix[i][j] == 1)){ if((num_neighbours < 2) && (conwayMatrix[i][j] == 1)){
/* tempMatrix[i][j] = probdie(10); */ /* tempMatrix[i][j] = probdie(10); */