diff --git a/day1/day1p2 b/day1/day1p2 new file mode 100755 index 0000000..f17daac Binary files /dev/null and b/day1/day1p2 differ diff --git a/day1/day1p2.c b/day1/day1p2.c new file mode 100644 index 0000000..9fc9e58 --- /dev/null +++ b/day1/day1p2.c @@ -0,0 +1,96 @@ +/* + 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; + } + + + printf("first position: %d\n", pos); + // 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') pos += num; + //if (drc == 'L') pos -= num; + + if (drc == 'R') { + for(int i = 0; i < num; i++) { + if (pos + 1 < 100) { + pos += 1; + } else { + pos += 1; + pos -= 100; + //printf("overflow -=100\n"); + } + 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++; + } + } + + while (pos > 99) { + //pos -= 100; + for (int i = 0; i < 100; i++) { + if (pos == 0) counter++; + pos -= 1; + } + } + while (pos < 0){ + //pos += 100; + for (int i = 0; i < 100; i++) { + if (pos == 0) counter++; + pos += 1; + } + } + + //if (pos == 0) counter++; + + printf("current position: %d\n", pos); + printf("counter is: %d\n", counter); + } + + //printf("current position: %d\n", pos); + printf("\npassword is: %d\n", counter); + return 0; +} diff --git a/day1/input_day2.tests.txt b/day1/input_day2.tests.txt new file mode 100644 index 0000000..290e520 --- /dev/null +++ b/day1/input_day2.tests.txt @@ -0,0 +1,9 @@ +R1000 +L1000 +L50 +R1 +L1 +L1 +R1 +R100 +R1