summaryrefslogtreecommitdiff
path: root/12/part1.c
diff options
context:
space:
mode:
authorBond_009 <bond.009@outlook.com>2022-12-01 22:30:22 +0100
committerBond_009 <bond.009@outlook.com>2022-12-01 22:30:22 +0100
commitbaf4910870a6e8999802b9a4a22eabd4142a34e3 (patch)
tree2d11443dc21e53bd0d99d015cf789937d6d95862 /12/part1.c
parent49d0c908f24b2c193c9deed1716fe36061ba26a1 (diff)
Move all Advent of Codes into one repo
Diffstat (limited to '12/part1.c')
-rw-r--r--12/part1.c78
1 files changed, 0 insertions, 78 deletions
diff --git a/12/part1.c b/12/part1.c
deleted file mode 100644
index 7ee0f4a..0000000
--- a/12/part1.c
+++ /dev/null
@@ -1,78 +0,0 @@
-#include <stdio.h>
-#include <stdint.h>
-#include <stdlib.h>
-#include <malloc.h>
-#include <string.h>
-
-#define MAX_INPUT_WIDTH 128
-#define MAX_INPUT_HEIGTH 128
-#define MAX_INPUT MAX_INPUT_WIDTH * MAX_INPUT_HEIGTH
-
-enum direction {
- North,
- East,
- South,
- West
-};
-
-int solve(const char *filename)
-{
- FILE *file = fopen(filename, "r");
-
- // Include space for newline and string terminator
- char buffer[8] = { 0 };
-
- enum direction dir = East;
- int hor = 0;
- int ver = 0;
- while (fgets(buffer, 8, file)) {
- int n = atoi(buffer + 1);
- switch (buffer[0]) {
- case 'N':
- ver += n;
- break;
- case 'E':
- hor += n;
- break;
- case 'S':
- ver -= n;
- break;
- case 'W':
- hor -= n;
- break;
- case 'F':
- switch (dir) {
- case North:
- ver += n;
- break;
- case East:
- hor += n;
- break;
- case South:
- ver -= n;
- break;
- case West:
- hor -= n;
- break;
- }
- break;
- case 'R':
- dir = (enum direction)(((int)dir + (n / 90)) % 4);
- break;
- case 'L':
- dir = (enum direction)((abs(4 + ((int)dir - (n / 90))) % 4));
- break;
- default:
- break;
- }
- }
-
- fclose(file);
-
- return abs(ver) + abs(hor);
-}
-
-int main(int argc, char *argv[])
-{
- printf("%i\n", solve(argv[argc - 1]));
-}