aoc

Thing1's 2025 aoc
Log | Files | Refs

1b.c (515B)


      1 #include <stdio.h>
      2 #include <stdlib.h>
      3 
      4 #define ABS(n) ((n < 0) ? -n : n)
      5 
      6 int
      7 rotate(int pos, int dis, int *zeros) {
      8 	int dir = (dis < 0) ? -1 : 1;
      9 
     10 	for (int i = 0; i < ABS(dis); i++) {
     11 		pos += dir;
     12 		if (pos > 99) pos = 0;
     13 		if (pos < 0) pos = 99;
     14 		if (pos == 0) (*zeros)++;
     15 	}
     16 	return pos;
     17 }
     18 
     19 int
     20 main() {
     21 	char line[20];
     22 	int pos = 50, off = 0, zeros = 0;
     23 
     24 	while (fgets(line, 20, stdin)) {
     25 		off = atoi(line + 1) * ((line[0] == 'L') ? -1 : 1);
     26 		pos = rotate(pos, off, &zeros);
     27 	}
     28 
     29 	printf("%d\n", zeros);
     30 }