diff options
Diffstat (limited to 'advent-of-code/2022/10/1.c')
| -rw-r--r-- | advent-of-code/2022/10/1.c | 54 |
1 files changed, 54 insertions, 0 deletions
diff --git a/advent-of-code/2022/10/1.c b/advent-of-code/2022/10/1.c new file mode 100644 index 0000000..12ddc22 --- /dev/null +++ b/advent-of-code/2022/10/1.c @@ -0,0 +1,54 @@ +#include <stdio.h> +#include <string.h> +#include <stdlib.h> +#include <stdbool.h> + +#include <str.h> + +int strength = 1; +int sum = 0; +int time = 1; + +int process() { + if (time == 20 || time == 60 || time == 100 + || time == 140 || time == 180 || time == 220) { + sum += strength * time; + } +} + +void tick(int value) { + process(); + time++; + strength += value; +} + +int main() { + FILE *fp = fopen("input", "r"); + while (true) { + char *rawline = fgetline(fp); + if (rawline == NULL) break; + char *line = str_strip(rawline); + free(rawline); + char** words = str_split(line, ' '); + if (words == NULL) { + free(line); + continue; + } + if (words[0] == NULL) { + free(line); free(words); + continue; + } + if (strcmp(words[0], "noop") == 0) { + tick(0); + } else if (strcmp(words[0], "addx") == 0) { + tick(0); + char *ptr; + int value = strtol(words[1], &ptr, 10); + tick(value); + } + str_list_free(words); + free(line); + } + printf("%d\n", sum); + return 0; +} |
