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
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 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); */