advent-of-code/2021/day2/main2.c

54 lines
902 B
C

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
FILE *
openInputFile(void)
{
FILE *fp = fopen("input.txt","r");
if (fp == NULL)
{
printf("Could not open file: input.txt\n");
exit(EXIT_FAILURE);
}
return fp;
}
int
main(void)
{
FILE *fp = openInputFile();
int position = 0;
int depth = 0;
int aim = 0;
char *line = NULL;
size_t len = 0;
ssize_t read;
while ((read = getline(&line, &len, fp)) != -1)
{
char *direction = strtok(line, " ");
int magnitude = atoi(strtok(NULL, " "));
if (strcmp("forward", direction) == 0)
{
position += magnitude;
depth += aim * magnitude;
}
else if (strcmp ("down", direction) == 0)
aim += magnitude;
else
aim -= magnitude;
}
printf("Final position: %d\n", position);
printf("Final depth: %d\n", depth);
printf("Product: %d\n", position * depth);
fclose(fp);
if (line)
free(line);
exit(EXIT_SUCCESS);
}