From 1f2323f093a95db338740d6534b36a46d668918c Mon Sep 17 00:00:00 2001 From: Taha Belkhiri <belkhiri.taha53@gmail.com> Date: Tue, 21 Jun 2022 13:58:21 +0200 Subject: [PATCH] checking for cycles using binary values --- travail_individuel/Belkhiri/GameOfLife/run | Bin 24000 -> 23968 bytes .../Belkhiri/GameOfLife/src/map.c | 22 +++++++-------- .../Belkhiri/GameOfLife/src/map.h | 5 +--- .../Belkhiri/GameOfLife/src/utility.c | 26 ++++++++++++++++++ .../Belkhiri/GameOfLife/src/utility.h | 1 + 5 files changed, 38 insertions(+), 16 deletions(-) diff --git a/travail_individuel/Belkhiri/GameOfLife/run b/travail_individuel/Belkhiri/GameOfLife/run index af69540990706f8de4044047d08508fde45a9b9b..822be8dad667a5b253701b229c6da36d40433f68 100755 GIT binary patch literal 23968 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 literal 24000 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 C;I5tk diff --git a/travail_individuel/Belkhiri/GameOfLife/src/map.c b/travail_individuel/Belkhiri/GameOfLife/src/map.c index e49cf5f..18514b0 100644 --- a/travail_individuel/Belkhiri/GameOfLife/src/map.c +++ b/travail_individuel/Belkhiri/GameOfLife/src/map.c @@ -4,9 +4,6 @@ int MAPSIZE = 20; int **map; -int ***mapList; -int mapListSize = 0; - void allocateMap() { map = malloc(MAPSIZE * sizeof(int *)); @@ -16,15 +13,9 @@ void allocateMap() } } -void allocateMapList(int SIZE) -{ - mapList = malloc(SIZE * sizeof(int **)); -} - void initMap() { allocateMap(); - allocateMapList(100); for (int i = 0; i < MAPSIZE; i++) { for (int j = 0; j < MAPSIZE; j++) @@ -60,8 +51,15 @@ void writeMap(char *filename) fclose(f); } -void addMapToList(int **map) +int MapToBinary(int ** map) { - mapList[mapListSize] = map; - mapListSize++; + int binary = 0; + for (int i = 0; i < MAPSIZE; i++) + { + for (int j = 0; j < MAPSIZE; j++) + { + binary += map[i][j] * pow(2, (i * MAPSIZE + j)); + } + } + return binary; } \ No newline at end of file diff --git a/travail_individuel/Belkhiri/GameOfLife/src/map.h b/travail_individuel/Belkhiri/GameOfLife/src/map.h index cb95414..72d0379 100644 --- a/travail_individuel/Belkhiri/GameOfLife/src/map.h +++ b/travail_individuel/Belkhiri/GameOfLife/src/map.h @@ -5,13 +5,10 @@ extern int MAPSIZE; extern int ** map; -extern int *** mapList; -extern int mapListSize; void printMap(); void initMap(); void writeMap(char* filename); -void addMapToList(int ** map); -int ** saveMapState(); +int MapToBinary(int ** map); #endif \ No newline at end of file diff --git a/travail_individuel/Belkhiri/GameOfLife/src/utility.c b/travail_individuel/Belkhiri/GameOfLife/src/utility.c index ebb1630..309a771 100644 --- a/travail_individuel/Belkhiri/GameOfLife/src/utility.c +++ b/travail_individuel/Belkhiri/GameOfLife/src/utility.c @@ -4,6 +4,9 @@ int surviveRule[NB_RULES] = {0, 0, 1, 1, 0, 0, 0, 0, 0}; int bornRule[NB_RULES] = {0, 0, 0, 1, 0, 0, 0, 0, 0}; int stable; +int BinaryList[LIST_SIZE]; +int BinaryListSize; + int survivingNeighbors(int x, int y){ int count = 0; for(int i = -1; i <= 1; i++){ @@ -15,10 +18,31 @@ int survivingNeighbors(int x, int y){ return count; } +void addBinaryToList(int binary){ + if (BinaryListSize == LIST_SIZE) return; + BinaryList[BinaryListSize] = binary; + BinaryListSize++; +} + +void checkForCycle(){ + int i = 0; + while (i < BinaryListSize){ + if (BinaryList[i] == BinaryList[BinaryListSize - 1]){ + printf("Cycle detected!\n"); + return; + } + i++; + } +} + void updateMap(){ int newMap[MAPSIZE][MAPSIZE]; stable = 1; + + int binary = MapToBinary(map); + addBinaryToList(binary); + for (int i=0; i<MAPSIZE; i++){ for (int j=0; j<MAPSIZE; j++){ int count = survivingNeighbors(j, i); @@ -44,5 +68,7 @@ void updateMap(){ map[i][j] = newMap[i][j]; } } + + checkForCycle(); } diff --git a/travail_individuel/Belkhiri/GameOfLife/src/utility.h b/travail_individuel/Belkhiri/GameOfLife/src/utility.h index f781d11..3e872d4 100644 --- a/travail_individuel/Belkhiri/GameOfLife/src/utility.h +++ b/travail_individuel/Belkhiri/GameOfLife/src/utility.h @@ -6,6 +6,7 @@ #define NB_RULES 9 +#define LIST_SIZE 100 extern int stable; void updateMap(); -- GitLab