From 736823f313bd2e00e49a1b52aaf0ea68a79db438 Mon Sep 17 00:00:00 2001 From: Vincent Douillet Date: Fri, 3 Dec 2021 17:01:37 +0100 Subject: improve input handling & merge part 1 and 2 for the first days --- 022.c | 69 ------------------------------------------------------------------- 1 file changed, 69 deletions(-) delete mode 100644 022.c (limited to '022.c') diff --git a/022.c b/022.c deleted file mode 100644 index c22aca8..0000000 --- a/022.c +++ /dev/null @@ -1,69 +0,0 @@ -#include -#include -#include -#include -#include "input.h" - -#define INPUT "input/02.txt" - -enum direction { forward, up, down }; - -struct submarine_move { - enum direction dir; - int length; -}; - -void parse_move(char* string, struct submarine_move* move) { - if(*string == 'f') - move->dir = forward; - else if(*string == 'u') - move->dir = up; - else if(*string == 'd') - move->dir = down; - else - err(1, "direction inconnue %c", *string); - - size_t stringLength = strlen(string); - char digit = string[stringLength - 2]; - if(digit < '0' || digit > '9') - err(1, "longueur inconnue %c", digit); - move->length = digit - '0'; -} - -int main() { - // lecture du fichier d'entree - FILE* file=fopen(INPUT,"r"); - if(file == NULL) - err(1, "Le fichier %s n'existe pas\n", INPUT); - - size_t lineCount = count_lines(file); - char** input = malloc(lineCount * sizeof(char*)); - read_lines_as_string(file, input, lineCount); - // fermeture du fichier - fclose(file); - - // l'algo - struct submarine_move currentMove; - long forwardDst = 0; - long downDst = 0; - long aim = 0; - for(size_t i = 0; i < lineCount; i++) { - parse_move(input[i], ¤tMove); - switch(currentMove.dir) { - case forward: - forwardDst += currentMove.length; - downDst += currentMove.length * aim; - continue; - case up: - aim -= currentMove.length; - continue; - case down: - aim += currentMove.length; - continue; - } - } - printf("%ld\n", forwardDst * downDst); - - free_strings(input, lineCount); - return 0; -} -- cgit v1.2.3