github.com/cycloss/advent-of-code@v0.0.0-20221210145555-15039b95faa6/2020/day5/day5.c (about) 1 2 3 #include <hashTable.h> 4 #include <stdio.h> 5 #include <stdlib.h> 6 #include <utilities.h> 7 8 void intPrinter(void* p) { 9 printf("%d\n", *(int*)p); 10 } 11 12 int main() { 13 timer(START); 14 FILE* in = fopen("day5.txt", "r"); 15 hashTable* ht = createHashTable(intHash, intComp); 16 int max = 0; 17 for (char buff[12]; fgets(buff, 12, in);) { 18 int low = 0, high = 127; 19 for (int i = 0; i < 7; i++) { 20 if (buff[i] == 'F') { 21 high = (high - 1 - low) / 2 + low; 22 } else { 23 low = (high + 1 - low) / 2 + low; 24 } 25 } 26 int l = 0, r = 7; 27 for (int i = 7; i < 10; i++) { 28 if (buff[i] == 'L') { 29 r = (r - 1 - l) / 2 + l; 30 } else { 31 l = (r + 1 - l) / 2 + l; 32 } 33 } 34 int* id = malloc(sizeof(int)); 35 *id = low * 8 + l; 36 max = *id > max ? *id : max; 37 addTableItem(ht, id); 38 } 39 printf("Max ID: %d\n", max); 40 41 for (int i = 0, i2 = 1, i3 = 2; i < 1021; i++, i2++, i3++) { 42 bool first = tableContains(ht, &i), second = tableContains(ht, &i2), third = tableContains(ht, &i3); 43 if (first && !second && third) { 44 printf("My seat ID: %d\n", i2); 45 break; 46 } 47 } 48 freeTable(ht, true); 49 fclose(in); 50 timer(STOP); 51 }