#include #include #include #include #include "input.h" #define INPUT "input/03.txt" #define INPUT_SIZE 12 void part1(char** input, size_t lineCount) { int oneCount[INPUT_SIZE]; for(int k = 0; k < INPUT_SIZE; k++) { oneCount[k] = 0; } for(size_t i = 0; i < lineCount; i++) { char* line = input[i]; for(int j = 0; j < INPUT_SIZE; j++) { if(line[j] == '1') oneCount[j]++; } } // null terminated string char binary[INPUT_SIZE + 1]; for(int h = 0; h < INPUT_SIZE; h++) { binary[h] = oneCount[h] > lineCount / 2.0f ? '1' : '0'; } binary[INPUT_SIZE] = '\0'; char* endp = NULL; unsigned long gamma = strtoul(binary, &endp, 2); unsigned long epsilon = gamma ^ 0xFFF; if(*endp != '\0') err(1, "erreur de parsing du gammaat"); printf("%ld\n", gamma * epsilon); } 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); part1(input, lineCount); free_strings(input, lineCount); return 0; }