54 lines
902 B
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);
|
|
}
|