/* Dial from 0–99, start at 50. You get lines like L68 or R5: L = move left (subtract) R = move right (add) Wrap around with modulo 100. After each move, check if the dial is on 0. The password = how many times you land on 0 during the whole sequence. */ #include #include int main(int argc, char* argv[]) { printf("Advent Of Code Day 1 part 2\n\n"); // remove argc so gcc wont cry (void)argc; // base vars int start = 50; int pos = start; int counter = 0; // read the input file char* inpf = NULL; inpf = argv[1]; if (inpf == NULL) inpf = "input.txt"; FILE* ptr = fopen(inpf, "r"); if(ptr == NULL) { printf("error: no such file %s\n", inpf); return 1; } // process instructions char line[9]; // 8 chars + eol while(fscanf(ptr, "%9s", line) == 1) { char drc = line[0]; int num = atoi(&line[1]); //printf("%c %d\n", drc, num); if (drc == 'R') { for(int i = 0; i < num; i++) { if (pos + 1 < 100) { pos += 1; } else { pos += 1; pos -= 100; } if (pos == 0) counter++; } } if (drc == 'L') { for (int i = 0; i < num; i++) { if (pos - 1 >= 0) { pos -= 1; } else { pos -= 1; pos += 100; } if (pos == 0) counter++; } } } printf("\npassword is: %d\n", counter); return 0; }