From 8741d0d45678800ad516d066b3634c2682661b87 Mon Sep 17 00:00:00 2001 From: dobiadi <50926840+dobiadi@users.noreply.github.com> Date: Mon, 18 Dec 2023 20:26:51 +0100 Subject: [PATCH] Day14 C --- day14/c/day14 | Bin 0 -> 16296 bytes day14/c/day14.c | 204 +++++++++++++++++++++++++++++++++++++++++++++++ day14/input.txt | 100 +++++++++++++++++++++++ day14/sample.txt | 10 +++ 4 files changed, 314 insertions(+) create mode 100755 day14/c/day14 create mode 100644 day14/c/day14.c create mode 100644 day14/input.txt create mode 100644 day14/sample.txt diff --git a/day14/c/day14 b/day14/c/day14 new file mode 100755 index 0000000000000000000000000000000000000000..483c0cc4567bce3e5f05c05f68d694a56bb6a08c GIT binary patch literal 16296 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 literal 0 HcmV?d00001 diff --git a/day14/c/day14.c b/day14/c/day14.c new file mode 100644 index 0000000..cbbdbd7 --- /dev/null +++ b/day14/c/day14.c @@ -0,0 +1,204 @@ +#include +#include +#include + +#define LINE_MAX_LENGTH 256 +#define MAX_ROUNDED_ROCKS 8*1024 +#define MAX_HISTORY_SIZE 2048 +#define abs(a) ((a) > 0 ? (a) : -(a)) +#define CYCLES 1000000000 + +typedef enum tile { + EMPTY, + ROUNDED_ROCK, + CUBE_ROCK, +} tile_t; + +typedef struct position { + int x; + int y; +} position_t; + +void tilt(tile_t map[LINE_MAX_LENGTH][LINE_MAX_LENGTH], int x, int y, int dir[2]); + +int main() { + char *p, *buf, c; + + buf = (char *)malloc(LINE_MAX_LENGTH); + memset(buf, 0, LINE_MAX_LENGTH); + p = buf; + + position_t rocks[MAX_ROUNDED_ROCKS]; + int rocks_num = 0, x = 0, y = 0; + + tile_t map[LINE_MAX_LENGTH][LINE_MAX_LENGTH]; + + while ((c = getchar()) != EOF) { + *p++ = c; + if (c == '\n') { + x = 0; + p = buf; + while (*p != '\n') { + switch (*p) { + case '.': + map[x][y] = EMPTY; + break; + case '#': + map[x][y] = CUBE_ROCK; + break; + case 'O': + map[x][y] = ROUNDED_ROCK; + rocks[rocks_num].x = x; + rocks[rocks_num].y = y; + rocks_num++; + break; + } + p++; + x++; + } + + y++; + memset(buf, 0, LINE_MAX_LENGTH); + p = buf; + } + } + + int dir[2] = {0, -1}; + tilt(map, x, y, dir); + + + int part1 = 0; + for (int i = 0; i < y; i++) { + for (int j = 0; j < x; j++) { + if (map[j][i] == ROUNDED_ROCK) { + part1 += y - i; + } + } + } + + printf("%i\n", part1); + + tile_t ***history = (tile_t***)malloc(MAX_HISTORY_SIZE * sizeof(tile_t**)); + for (int i = 0; i < MAX_HISTORY_SIZE; i++) { + history[i] = malloc(LINE_MAX_LENGTH * LINE_MAX_LENGTH * sizeof(tile_t)); + } + int history_num = 0; + + int offset = 0, period = 0; + for (int i = 0; i < CYCLES; i++) { + int found = 0; + for (int j = 0; j < history_num; j++) { + if (!memcmp(map, history[j], LINE_MAX_LENGTH * LINE_MAX_LENGTH * sizeof(tile_t))) { + offset = j; + period = history_num - j; + found = 1; + break; + } + } + if (!found) { + memcpy(history[history_num], map, LINE_MAX_LENGTH * LINE_MAX_LENGTH * sizeof(tile_t)); + history_num++; + } + if (found) { + break; + } + if (i != 0) { + dir[0] = 0; + dir[1] = -1; + tilt(map, x, y, dir); + } + dir[0] = -1; + dir[1] = 0; + tilt(map, x, y, dir); + dir[0] = 0; + dir[1] = 1; + tilt(map, x, y, dir); + dir[0] = 1; + dir[1] = 0; + tilt(map, x, y, dir); + } + + for (int i = 0; i < (CYCLES - history_num) % period; i++) { + dir[0] = 0; + dir[1] = -1; + tilt(map, x, y, dir); + dir[0] = -1; + dir[1] = 0; + tilt(map, x, y, dir); + dir[0] = 0; + dir[1] = 1; + tilt(map, x, y, dir); + dir[0] = 1; + dir[1] = 0; + tilt(map, x, y, dir); + } + + int part2 = 0; + for (int i = 0; i < y; i++) { + for (int j = 0; j < x; j++) { + if (map[j][i] == ROUNDED_ROCK) { + part2 += y - i; + } + } + } + + printf("%i\n", part2); + + for (int i = 0; i < MAX_HISTORY_SIZE; i++) { + free(history[i]); + } + free(history); + free(buf); +} + +void tilt(tile_t map[LINE_MAX_LENGTH][LINE_MAX_LENGTH], int x, int y, int dir[2]) { + position_t start; + int *iterate, iter_length; + if (dir[0] == 1) { + start.x = x - 1; + start.y = 0; + iterate = &start.y; + iter_length = y; + } else if (dir[0] == -1) { + start.x = 0; + start.y = 0; + iterate = &start.y; + iter_length = y; + } else if (dir[1] == 1) { + start.x = 0; + start.y = y - 1; + iterate = &start.x; + iter_length = x; + } else if (dir[1] == -1) { + start.x = 0; + start.y = 0; + iterate = &start.x; + iter_length = x; + } + + position_t to_put; + for (int i = 0; i < iter_length; i++) { + *iterate = i; + memcpy(&to_put, &start, sizeof(position_t)); + int *iterate_secondary = iter_length == x ? &to_put.y : &to_put.x, iter_length_secondary = iter_length == x ? y : x; + for (int j = 0; j < iter_length_secondary; j++) { + int cx = start.x - dir[0] * j; + int cy = start.y - dir[1] * j; + tile_t current_tile = map[cx][cy]; + switch (current_tile) { + case EMPTY: + break; + case ROUNDED_ROCK: + map[cx][cy] = EMPTY; + map[to_put.x][to_put.y] = ROUNDED_ROCK; + to_put.x -= dir[0]; + to_put.y -= dir[1]; + break; + case CUBE_ROCK: + to_put.x = cx - dir[0]; + to_put.y = cy - dir[1]; + break; + } + } + } +} diff --git a/day14/input.txt b/day14/input.txt new file mode 100644 index 0000000..8290467 --- /dev/null +++ b/day14/input.txt @@ -0,0 +1,100 @@ +...#.#.O....#.#.OO.OOO.O..O.......O#OO#.#..#....O...#.....O.O#..O..OO..O.#...#O..#...O...##O...OO... +#O....O#..O.#.#..O#...#O.O....#O.#.#O#........O...O..#.OOO#O#.......OO##O.#.OO.O.#...##.##....O#..O# +.O.......O.O.O.O..O.O.....#....O#..#.#O.#OO...#O.O#.O#..#O...#...O.O.......#.O....O.#..#.O##O#..O... +...O....#.OO..#..OO#..##....#O.......OOOOOO...OO..#...#.O..O....#O..OO.#O...#O#...O..O#..OO....#.... +..O...##OOO....#..OO.OO#O##..#.#........O#.#.....#OO...#............#.###..#.#O...#..O.#O#.O#O.....# +...............O.....##..O...O#.O#........#.O.#..#...#..O..O.#...#......#......O.OO.OOO.#.O.....O##. +......#..#..###.OO.#......O..O.O##O..O.....OO.#.OO....O.....OO#O..O....#.....#.#.O#..O..O.OO.O#O.O.# +##O.....O.#.#O...#.#O###....#.O#.#..#..O.#O........O.OO..#..#O#.O#..OO..#.O.##O....#.##O.O.......##. +O#...###...O..#...#......O#.OO.....#...OOO...#.#O.#...##..OO#.......#OO.....#...O...#.#O.........O.O +..O....O....OO..O.O.O........#.O#..O.#..#..OO#.OO..#.O...O..#...O..##..O........O##..........OOO..OO +....##......#.#.O.O#O##.#....#..O#............#..#...#......#O.OO#....O.......O###....O...........OO +.O.OOO..O#....O...O..#.O#.#O.O...#.O..O#...OO#.#....#OO.#........#O.......O...#O......O...O....#...# +.#....#O...##..#.#..........O..#O........OOO.......O.OO.##...#..........#......#.O##.#O#OO#OO..#..O. +......#O...#.#.......O........#O....#O..##....O......O.#.O..#OO............O##O....#O.OO#..O#..O#... +..OO.....O#O..#OOOO#O.##.........O..#OO#......O.OO.....O......OO..O...O..O....O..O#O.......O..O.O#.. +....O...OO....##.....OOO...O#O.#.O...O.....#........#.#O#.....O.O.OO.###.#.OO#OO....O.....O..#.#O... +.OO#..O#O#O...#..O.O....O#.O.#........O.O..O....#O#....#.#.O#.#...O.O..O..#..#...OO#O......#O.O..O.# +OO...O.O.#..#....#...#O.O##O#...#............##.O..OOO....O..OO....#OO....O.#....O#.O........OO..#.. +..O#.OO#.#O#..O.......O.##.O.#....OO#.#O#.##.O..O#..####....#..#......#...##.O##...O....O..#.#...... +#O.O#.....#....O...O.O..O.O.O#O.O#....#..O...#.O.#O...#..#.#O.....#O..##...O.......O.....O..OO#OO##. +..O.#..#...O....#.##.#.O......#.#.##.......#.O..##O#.#O.OOO..O...#O......#..O.....O.OO...O#.O.#OO#.O +.#..OO#.......OO....O.##...O......O.OO#.O......#O..O#..#..O.O..O.#..OO.O.#O..O..#......O...O....O#.. +O....#.#O..O#...#..##..##.O.O.O..O.O#...O#..#O.O......#O.......O..O.O...#.#O..OO#.#.....#O#...O..#.O +...O...O.O.O.OO..O....O..O..O##..O.........O#O..O.#...#.O..O.#........#...O........O#.#.O..O.....#.. +OO....O#...........#OO......O.....O...#...OO....OO..O.........O.#......##O....#...O##....O.#...#...# +#OO#....#......OO.O....O...#..O...#.OOOO..OOO.O.O...O#.......O....#O#O.O#O......#...#...OO#.O...#..# +....O#.#...O..#.................#.#...O...O...O.O#.##..O.#.#....####..OO....O.......#.OO.O....#...#. +.....O.#.#O..#O...#OO....OO...O#..O...O..#O..O....#.#O..#.......O...O.O.....#.##.#O.OO..#.#....###.. +.#O..#...#...#.#.O.#O.#OO..#.#..#O#.#.#O#.O#O#..##..#...#O#.#..#.OO#..#..#..O...O...O..O...#.O....O. +..O.....#....#O#OO#O.....O.....O...OO.O......OO..O....O...#....O....#...OO....O..O...#...###O.....#. +##..##...#OOO...#.OO...#.#.O#.O.........O.O.#.O..O.OO#.O......#.###...#..#O.#....#...#.O..##...#O... +.O.#...O.O....O.......O...#O.....O......OO..OOO##.#...##OO.O......#....O..#..#.##.OO.......#O...#OO. +...#...O#..O.#.OO.#.OO..O.#O.#.O.#...O#....O#.O#......OO.#....#..#..#..#....O.#....##............... +.O.O#....#.#.....O...#.O#O#.......#.#O..OO.O...#....#.....O.#.#.#..#...#...##..O.O...#O..O.#..#O.... +.#......O..O#...O.O.##O..#.OOOO.O#O....O#...#O..OO.#.#O......#..O..O.OO#OOO#O#.O.......OO.....O...#O +O##.O..OOO.#..O......#...#O#.O.O#..O.OO..#......O.O.O..O.O.OO..#....O.#O...O#.#..#..O.#...##O.O..... +.#OO#....#.....#..OO.OO...##.O......OOO.#O..O#.O.O.........O#.O.#.#...#..##...#O.O..OO.O#.#..O..O.O. +.O.....#.O#....O#.....#.O..O..O#..#..OOO#O....#OOOOO.#.#.........O#..O.#....#.#....O.#..##..#....... +..O.#OO....#O.#...#O...#.O#..#.O....O.#..O....O#.....O.OO..OO.OO#.#..#..#O.O.#...O....OO...O.#..O..O +.O.OO#...O#.OO....#.O....O.###...#..O.....O....#.O..O.#O.O.....#....#O#O...#..O...O........O...#.... +#...#...#..O..#.##.#.....O#..#O.##.O...O...#....O.O.O..O.O........O.O.O.....O..#.......#...O..O.#.#O +#O...#...O.#....#.O.....OOO..O...OO#OO#.......#O.##...#.O#O#....#.....O#..OO.#.#.O.O..O.#OO.O.#..O.. +......O.......O.#.O.#.O...........O.O.OO#....#OO........O#.......OO.O..#O...#....O#..O....OO..O##... +.##..O..#O...O.O....#O#..OO#O.#....#O.OO#O....#.....#...#.#OO#.OO.#.O.O.O.OO.#O.O.#.O....#O.O.O..O.. +O#..O#O##.O....O..#......O....#..O##O.O#...O...O...OO#..#OO...O##.#....O#.O..O.......#..#......#O..# +O.OO..O..#.O..O#OO#O.....#O..O..#...#.OO.O..O...........O...O...OO##.#..O..#.#.OO.#.#...O.O......O.O +.O.O##.O....#O.O...O#.#..O....#O.....O..O#OO....OO##.#.O..#O.O...O..O.O...#O.OO.........#.##OO#..#.. +..OO....O.....#....O.....O...OOO#...#.O.........O.O..OOO.###O.#.......#.#...O.OO.#..O.....#O.....#.. +O...##O...O..##..#.#...#.#O#.O...#.#.O..O....##......#...#.O..O...OO.#...OOO#OO...O.O#O..OO.O##O..O. +..#.OO.#.##..O....#...OO.#O.......O.O#...O..#.#O..O.###O#.#.O.O...O.#O.#..#.O..O#O#..O.........#.#.. +O.#.O##.......OO#....O#.......O..O.....#.........O.O.....#O.......#O..#.O...#....O.#....#......O.O.# +.OO.O...O.......#O#....#O#...#.........O..O.#.OO#.OO.O#...#O...O..#..O##O.#...O#..O.OO.O...#OO.##.#. +...O.O...OOO.O......#..O...#.##.O..O..#...O.O...#.O.O..OO..OO..#....O.O#..#...O.OO.#.....#...OO#...# +.#............#O.OO..O#.....O..#O.#O.##O....O.O....O..O#..O..O.#..O.#.O.#.O.#..#O.#.OO.O......##...O +#.....O.#..O.O........O#O#OO..OO.....#.#....OO##......O.O.##..##.#.O...O.#.#O......O..##.#.#.#..#O.. +##.#.O..O...O..OO...O....O.O..O#...OO....OO#.#...#.#....OO#..........O..O...O...O........#..O##.#.#. +..OO.#..#.OO..#O..#.O...OO.O...O....#..OO....#OO..#........#...O..........#..O...OO.O.......#.#..##. +.#.#...#O.O.#.O..O.OO.OO#..OO#OOO#O....O..O#..OO.O..##..#.#....OOOOO#....OO..O....#..O.............. +...O#.OO......O.#.O.#.#O.OOO...#OO..#....#.O.O.O.......#...##...O...OOO..##...O....O...O.#...O.O...O +..O...O..#.O.....#.#..##.......####...##.......O...O#.##....O.#..OO....#.#.O...##O.#O.###.OO#....O.O +.O#..#....OO...O.O.......O#OO..O#.O.O..#......#..O.#..#O......OO.O...O.....O........O#.#O.#.#.##.O#. +..O....O.#...#..##..O...#.O#..OO...O.......#OOO......#O..OO...O...#..O...##O.#...#.#.##...O...#.OO.. +O.#..#...O#OO.O#.O..O.....O.O..#.#.##....O.O..O......OO.O.#.....#....#.##...#...O..O........#......# +.OO.OO.........#...#.#O...#..#..#.###O....#...OO#......#O.O..........#O...#.#.#O#..........#.O#...OO +##.#..#O#OO.#.....O......#....O..#.O#..#.OO.........#.......#.#..#..O.O#OO.###.O.#.#O..##....O.O..O# +#...O...O.......O#.O.#..#O#.O...O...O...O.O.#.O....O###..#.O..O.....O..OO#...O.#...#....O.#O..OO.O.. +#O...O...O.##..#.#OO.....#O.#..O....#O.O....O.....#.O.....#.O.O....#.......O.#.O..#.O.##....O..O..O# +O..O.....#O..O...O........O..#.#..........##O#..#..O.#.#OOO..#..O...O..O..#.O....O...O...#...#...O.. +#...O.......O#..#.O#.O.....#....O#O......O..O.....#.....O...#...O...#O..#.O..#..#....O....##O#.....# +O...O..#O#.OO..##..#.......O.........#......#...#..O.O..#..#O..O..O.OO......O#OO.#..O#....#.O.#..... +.....#.OOO..OOO....O...#O....O.#.O.#.#O..#O.......O#..O.#O.#.#..#......O#O###..#.#.O..OO.O#.##.OO#.# +O...#..O#.##O..#...#.....O...O.O............O#.....#.O....O#....O#.#O#O..O#.OO..........#.O.#OOO.O.. +......#..#...O..O....OO#.O...OO..O....O..##O#..O#..O..##.O..#....##OO.....#..O#.O....#O.#....##.O... +.#..O.O..#..........O...O...O.#..O.#......O.O.....OO#..#...O.....O##..O.O..#.OO.#O.O....O...O..#..#. +.OO.#..O......#........#.#.O...#..........O..O.O.......OO..##O.....#...O...#..#O###..O..O.OOOOO.#.O. +.O..#..O..O...O..#O......OOO.O#..O#.#O...O#O.#...O....O..OO.#....#...O#................O.#O..O.#O..# +......O..O...##..O..##.O.####..OO.O.......#.#O..O#..O#O.......#..O.....##........#..O..O.#...O....OO +.....O.O.O.....O..OO..#O..O#.#OO....#O...#O#.#.OO.#..O...O.#.....#.#O#..O#...OO##.........##...##..# +....O..OOOO..O.O...#.....#.#..OOO...#OO.O#..O..O....#O.......#.O..OOO......OO...#.O#............O#.O +......O....#...#.#..O.O#.#...O..O.OO##.O..O#OO##...#.#..O.OO.........#..##O#...O.#..O.#OO.#O#...##O. +O..##.O...O..#.O.O.O..O.........#..O...#..O.O.##O#.O..#.#.....#..#O#..#.OOO#.O..O...OO#.O...O#...... +.O.....O......O.......O#..O.OOOO..O..OO.O#.##.OO#O#.O......#...#.........O..O#...#O..#..#.O...O.#OO. +#O.O...#..OO.#...O.O#....#..#...#OOO##.O.OO#.....#.O#.O..O.#O#O.O.O..........O#.O#.#O###O..#..#.#OO# +#O###.O..O..O......#.O#.#....OO..O.O#....#...#...#.##...OO..O.#OO........O....O..O....OO......O..O.# +.O#O..O...#OOO...O.O...#.O#......#......#O.....O.#.#.O.#....O#.#O..#...#..#...OO#.....OOO....OO..... +..O.#.O....OO......O...O..##.O........#.O.#O.#...O...O.#.##OO.#O......O...O..O.O.O.##..O#.##.#.#O... +.#OO#.#.O#O....O.O....OO#....##.....#.##O..O...OO.....#..O.#....O#.......O....OO.OOO.#...#..O.O.#.OO +.O...O....#.O..O.#..#.........O.#O#.#...O..#O.O.O..O##.....OO..O.O..OO..O..#..#.#.O..#O..O.OO##....O +.##...#O.O..OO..O..#.#O.O.OO.#..#.OOOO.....O...O.O.O#...O#.#.O.............O..O...#.#..........OO#.# +.#....##O....##O..#.O.O..#..O##....#.#.OO........O.O#..#........#OO........O...#.OO..#.........#.... +.##OO..#O.#.O..OO.#...#O#.....O....O.#....#O..O#O.#.O..##.O.O.....#.#...#.O..OO....O....#.#.#....... +O.O.O.#....#.OO.#...#...O..#.OO..#..O..#...O.OO.O...##...OO.O#O..O.OO.O##.....#..O#..#O....O.O#OO.#. +.#.O....#.#....#..O.O....OO......O......O.#...O...#.O.O..#.#.....O..#O.O.O..OOO#.O#..O...O#..OO..... +#.#O..#....#.....O.#....#......O.O..O.O.OO.O#...O.#.O.O...#....O...#..#...O.#.O..#.O...OO.#.#O###.OO +..#..O..#O##..#.....O...#..O...OO..#.#.O.#.O.O.....O..O#O#..O......#...#O.O.OO..O............#....#. +....O#....O#O###O.O..#.#..O.#.O.#.O....O........#O.OOO......O.OO....O.O.O.....##.O#....##O.#.OO..O.# +..#.O...OO.#O.#..OO.##..#...O#..O#..#O.O..#......O.....##....O...O.O#OO#O.......O##OOO.OO.O...O.#..# +O......#.O.....OO.OO.O...O.#O..O...O.#.#...#...O...#.OO.O.#.#OO.....#.O.#....OOO........##...##.##O. +#O...#....#...##O.#......O#...#O..........##O..#.O.#O#..#...OO.O....O..##..#...#...#..O..O....O..O#. +...OO....O#..O..#....O.#.#.....OO.#..#O..OO.#.#.#.#......O...O..#.#..##.....#...O.##.....O#.#..O#O.. diff --git a/day14/sample.txt b/day14/sample.txt new file mode 100644 index 0000000..5a24dce --- /dev/null +++ b/day14/sample.txt @@ -0,0 +1,10 @@ +O....#.... +O.OO#....# +.....##... +OO.#O....O +.O.....O#. +O.#..O.#.# +..O..#O..O +.......O.. +#....###.. +#OO..#....