From 7f9333b79c7d2e7a2bf89589d3e06f1637fcd864 Mon Sep 17 00:00:00 2001 From: dobiadi Date: Sun, 8 Dec 2024 12:35:40 +0100 Subject: [PATCH] Day8 --- day8/c/day8 | Bin 0 -> 15792 bytes day8/c/day8.c | 133 ++++++++++++++++++++++++++++++++++++++++++++++++ day8/input.txt | 50 ++++++++++++++++++ day8/sample.txt | 12 +++++ 4 files changed, 195 insertions(+) create mode 100755 day8/c/day8 create mode 100644 day8/c/day8.c create mode 100644 day8/input.txt create mode 100644 day8/sample.txt diff --git a/day8/c/day8 b/day8/c/day8 new file mode 100755 index 0000000000000000000000000000000000000000..d6b1ba173b4a71d8b40a5477e1d613fd89a54423 GIT binary patch literal 15792 zcmeHOeQ+Da6<^5;5&4juG=LMnG$6pHM6nXbl^`jSBPXjMlQcMx3`s7EEXM+WA)ml7 zX)z-ka#cjrX@+KKI!(U@O2Z7alrpph8|R~;r8v-OJxKwFHqAL9BrT8+C{f?r+ozlr zo9VPO{e#hZ?%uxNzTfVK&w#(ts|vf;w2!FSB8~QJqC?m& zCB+kCf}2mqvrq=04NE}m87t&T){YHpa>oM=sT&g}G6&#bQUbhLS93m4F@ zO4x8tExL6%vv#pw#E5TUmJzyD>R=)Y+D?NF!;bu0Tyuu1hZY}L_NA6TzxIXwsWtcU zG}_>CV4rA%1u@*Hp!<_yLmMMLF4hHgEQqgP9;HwStZ-Kbz|=wz^sC0euO9=?0PcdV zu;Ar5TK_A@z?Y4I-!caN1mG^%3d{2VxC%kg=fQ@@R#+|vU^G85u2a}_wlrWc=(=GY zYD1!xDN2VLjoq!pn(kH_qlsqLn2g8S`nVcn?I|_Z6itE⩔pwB~_&*DoC-;sM45d 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 +#include + +#define MAX_DIMENSION 1024 +#define MAX_ANTENNA_KINDS 128 +#define MAX_ANTENNA_PER_KIND 128 + +typedef struct antennas { + char antenna_kind[MAX_ANTENNA_KINDS]; + int antennas[MAX_ANTENNA_KINDS][MAX_ANTENNA_PER_KIND][2]; + int antenna_count[MAX_ANTENNA_KINDS]; + int count; +} antennas_t; + +int main() { + char c; + + char **map = calloc(MAX_DIMENSION, sizeof(map[0])); + int rows = 0, columns, i = 0; + + map[0] = calloc(MAX_DIMENSION, sizeof(map[0][0])); + + while ((c = getchar()) != EOF) { + map[rows][i] = c; + i++; + if (c != '\n') { + continue; + } + columns = i - 1; + rows++; + + map[rows] = calloc(MAX_DIMENSION, sizeof(map[0][0])); + i = 0; + } + + + antennas_t antennas = { 0 }; + + for (i = 0; i < rows; i++) { + for (int j = 0; j < columns; j++) { + switch (map[i][j]) { + case '.': + break; + default: + { + int idx; + for (idx = 0; idx < antennas.count; idx++) { + if (antennas.antenna_kind[idx] == map[i][j]) { + break; + } + } + if (antennas.count == idx) { + antennas.count++; + } + antennas.antenna_kind[idx] = map[i][j]; + antennas.antennas[idx][antennas.antenna_count[idx]][0] = i; + antennas.antennas[idx][antennas.antenna_count[idx]][1] = j; + antennas.antenna_count[idx]++; + } + break; + } + } + } + + int **antinodes = calloc(rows, sizeof(antinodes[0])); + for (i = 0; i < rows; i++) { + antinodes[i] = calloc(columns, sizeof(antinodes[0][0])); + } + int **antinodes2 = calloc(rows, sizeof(antinodes2[0])); + for (i = 0; i < rows; i++) { + antinodes2[i] = calloc(columns, sizeof(antinodes2[0][0])); + } + + for (i = 0; i < antennas.count; i++) { + for (int j = 0; j < antennas.antenna_count[i]; j++) { + for (int k = j + 1; k < antennas.antenna_count[i]; k++) { + int x1 = antennas.antennas[i][j][0]; + int y1 = antennas.antennas[i][j][1]; + int x2 = antennas.antennas[i][k][0]; + int y2 = antennas.antennas[i][k][1]; + int diffx = (x2 - x1); + int diffy = (y2 - y1); + for (int l = 0; 1; l++) { + int ax1 = x2 + l * diffx; + int ay1 = y2 + l * diffy; + if (!(ax1 >= 0 && ax1 < rows && ay1 >= 0 && ay1 < columns)) { + break; + } + if (l == 1) { + antinodes[ax1][ay1] = 1; + } + antinodes2[ax1][ay1] = 1; + } + for (int l = 0; 1; l++) { + int ax2 = x1 - l * diffx; + int ay2 = y1 - l * diffy; + if (!(ax2 >= 0 && ax2 < rows && ay2 >= 0 && ay2 < columns)) { + break; + } + if (l == 1) { + antinodes[ax2][ay2] = 1; + } + antinodes2[ax2][ay2] = 1; + } + } + } + } + + int count = 0; + int count2 = 0; + for (i = 0; i < rows; i++) { + for (int j = 0; j < columns; j++) { + count += antinodes[i][j]; + count2 += antinodes2[i][j]; + } + } + + for (i = 0; i < rows + 1; i++) { + free(antinodes[i]); + } + free(antinodes); + for (i = 0; i < rows + 1; i++) { + free(antinodes2[i]); + } + free(antinodes2); + for (i = 0; i < rows + 1; i++) { + free(map[i]); + } + free(map); + + printf("%i\n", count); + printf("%i\n", count2); +} diff --git a/day8/input.txt b/day8/input.txt new file mode 100644 index 0000000..1e7f2b1 --- /dev/null +++ b/day8/input.txt @@ -0,0 +1,50 @@ +.........................p........................ +......................h....C............M......... +..............................p....U.............. +..5..................p............................ +..6z...........................................C.. +...............c...........zV..................... +...5.....c........................................ +.Z.............h........S...z....9................ +.O............................9...z........M..C... +..O....5..............................F..M..C..... +..Z.........5.c...............M....V.............. +........ZO................q....................... +s...O................h..Uq.....7V...........4..... +.q.g..............c.............p.......4......... +............hZ.............................4G..... +6s...........................U.Q.....3............ +.......6.................9.......Q.............3.. +....s..D.........................6................ +.............................................FL... +.................................................. +..g...D.........q.....f.......Q...F....L......7... +...............2.........f.............V.L...4.... +...................2.s...................f3......G +....g...........................v......7P......... +..2..g.............d.....v...........P.......1.... +..............u.........f.............L........G.. +.........l.D....u...............d........o..P..... +..................8...............9..1......o...7. +............l..................................... +...................l...S...........F.......o..U... +.......................u...S...................... +..........l....u...............m...........P....G. +......................................1.8.......o. +.................................................. +..................v.......S................0...... +.............v........d.....1..................... +.................................................. +..........D....................................0.. +...................m.............H..........0..... +...................................d......0....... +.................................................. +....Q............................................. +................................H................. +........................H....................8.... +.................................................. +.................................................. +.........................................8........ +.......................H3......................... +............................m..................... +................................m................. diff --git a/day8/sample.txt b/day8/sample.txt new file mode 100644 index 0000000..78a1e91 --- /dev/null +++ b/day8/sample.txt @@ -0,0 +1,12 @@ +............ +........0... +.....0...... +.......0.... +....0....... +......A..... +............ +............ +........A... +.........A.. +............ +............