Day 2 solutions

This commit is contained in:
Peter 2021-12-02 18:54:41 +08:00
parent f717130799
commit 50efc984f9
2 changed files with 68 additions and 0 deletions

32
2/2-1.c Normal file
View File

@ -0,0 +1,32 @@
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
int main(int argc, char const *argv[])
{
FILE *p_file = fopen("input", "r");
char instruction[50];
int horizontal, depth = 0;
while (fgets(instruction, sizeof instruction, p_file) != NULL)
{
char direction[50];
int *amount = malloc(sizeof(int));
if (sscanf(instruction, "%s %i", direction, amount) != 2)
exit(EXIT_FAILURE);
if (strcmp(direction, "up") == 0)
(*amount) *= -1;
if (strcmp(direction, "forward") == 0)
{
horizontal += *amount;
}
else
{
depth += *amount;
}
// printf("POSITION horizontal %d, depth %d\n", horizontal, depth);
}
printf("%d\n", depth * horizontal);
return 0;
}

36
2/2-2.c Normal file
View File

@ -0,0 +1,36 @@
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
int main(int argc, char const *argv[])
{
FILE *p_file = fopen("input", "r");
char instruction[50];
int horizontal, depth, aim = 0;
while (fgets(instruction, sizeof instruction, p_file) != NULL)
{
char direction[50];
int *amount = malloc(sizeof(int));
if (sscanf(instruction, "%s %i", direction, amount) != 2)
exit(EXIT_FAILURE);
if (strcmp(direction, "up") == 0)
{
aim -= *amount;
}
else if (strcmp(direction, "down") == 0)
{
aim += *amount;
}
else // FORWARD
{
horizontal += *amount;
depth += (*amount) * aim;
}
// printf("POSITION horizontal %d\t depth %d\t aim %d\n",
// horizontal, depth, aim);
}
printf("%d\n", depth * horizontal);
return 0;
}