summaryrefslogtreecommitdiff
path: root/Advent-of-Code-2021/AOC-25/aoc-25.c
diff options
context:
space:
mode:
Diffstat (limited to 'Advent-of-Code-2021/AOC-25/aoc-25.c')
-rw-r--r--Advent-of-Code-2021/AOC-25/aoc-25.c154
1 files changed, 0 insertions, 154 deletions
diff --git a/Advent-of-Code-2021/AOC-25/aoc-25.c b/Advent-of-Code-2021/AOC-25/aoc-25.c
deleted file mode 100644
index 089b141..0000000
--- a/Advent-of-Code-2021/AOC-25/aoc-25.c
+++ /dev/null
@@ -1,154 +0,0 @@
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <assert.h>
-#include <math.h>
-#include <stdint.h>
-
-#define XLEN 139 //10
-#define YLEN 137 //9
-#define LEN (XLEN * YLEN)
-
-typedef struct Sea_cuc_move {
- int from_pos;
- int to_pos;
-} Sea_cuc_move;
-
-char map[LEN];
-char map_bak[LEN];
-
-void ParseInput(char *filepath)
-{
- char ch;
- FILE *fp;
- fp = fopen(filepath, "r");
-
- if(fp == NULL)
- {
- fprintf(stderr, "ERROR: something with file idk what fuck you");
- exit(EXIT_FAILURE);
- }
-
- int i = 0;
- while((ch = fgetc(fp)) != EOF)
- {
- if(ch == '\n') continue;
-
- map[i] = ch;
- i++;
- }
-
- fclose(fp);
-}
-
-void Move(char type, Sea_cuc_move pos)
-{
- map[pos.from_pos] = '.';
- map[pos.to_pos] = type;
-}
-
-void MoveEast()
-{
- Sea_cuc_move positions_east[5000];
- int cucs_east = 0;
-
- for(int i=0; i<LEN; i++)
- {
- if(map[i] == '>')
- {
- int x = i % XLEN;
- if(x == (XLEN-1))
- {
- if(map[i - x] != '.')
- continue;
-
- positions_east[cucs_east] = (Sea_cuc_move){i, i - x};
- cucs_east += 1;
- }
- else if(map[i+1] == '.')
- {
- positions_east[cucs_east] = (Sea_cuc_move){i, i + 1};
- cucs_east += 1;
- }
-
- }
- }
-
- assert(cucs_east < 5000);
-
- if(cucs_east != 0)
- for(int i=0; i<cucs_east; i++)
- Move('>', positions_east[i]);
-}
-
-void MoveSouth()
-{
- Sea_cuc_move positions_south[5000];
- int cucs_south = 0;
-
- for(int i=0; i<LEN; i++)
- {
- if(map[i] == 'v')
- {
- int y = floor(i / XLEN);
- if(y == (YLEN-1))
- {
- if(map[i%XLEN] != '.')
- continue;
-
- positions_south[cucs_south] = (Sea_cuc_move){i, i%XLEN};
- cucs_south += 1;
- }
- else if (map[i+XLEN] == '.')
- {
- positions_south[cucs_south] = (Sea_cuc_move){i, i+XLEN};
- cucs_south +=1;
- }
- }
- }
-
- assert(cucs_south < 5000);
-
- if(cucs_south != 0)
- for(int i=0; i<cucs_south; i++)
- Move('v', positions_south[i]);
-}
-
-void NextStep()
-{
- MoveEast();
- MoveSouth();
-}
-
-void PrintMap()
-{
- for(int i=0; i<LEN; i++)
- {
- if((i % XLEN) == 0)
- printf("\n");
- printf("%c", map[i]);
- }
- printf("\n\n");
-}
-
-
-int main()
-{
- ParseInput("input.txt");
-
- for(u_int64_t i=0; i < 10000; i++)
- {
- memcpy(map_bak, map, sizeof(char) * LEN);
- NextStep();
-
- if(strcmp(map, map_bak) == 0)
- {
- printf("EQUAL after: %llu\n", i + 1);
- exit(0);
- }
- }
-
- PrintMap();
-
- return 0;
-}