advent2025

Advent of Code 2025 Solutions
git clone git://bsandro.tech/advent2025
Log | Files | Refs | README | LICENSE

day01.c (1101B)


      1 #include <stdio.h>
      2 #include "cputime.h"
      3 
      4 #define DIAL 100
      5 
      6 int main(void) {
      7     int cur = 50;
      8     int p1 = 0;
      9     int p2 = 0;
     10     char dir = 0;
     11     char buf[4] = {0};
     12     int bufl = 0;
     13     int cnt = 0;
     14     for (int c=getchar();c!=EOF;c=getchar()) {
     15         if (c=='L'||c=='R') {
     16             dir = c;
     17             cnt = 0;
     18         } else if (c>='0'&&c<='9') {
     19             buf[bufl++] = c-'0';
     20         } else if (c=='\n') { // sscanf() felt slow
     21             for (int i=0;i<bufl;++i) {
     22                 cnt = cnt*10+buf[i]; // reinventing atoi
     23             }
     24             if (cnt>=DIAL) {
     25                 p2 += cnt/DIAL;
     26                 cnt = cnt%DIAL;
     27             }
     28             if (dir=='L') {
     29                 if (cur&&cnt>cur) p2++;
     30                 cur -= cnt;
     31                 if (cur<0) cur=DIAL+cur;
     32             } else if (dir=='R') {
     33                 if (cur+cnt>DIAL) p2++;
     34                 cur += cnt;
     35                 if (cur>=DIAL) cur = cur-DIAL;
     36             }
     37             if (cur==0) { p1++; p2++; }
     38             bufl = cnt = 0;
     39         }
     40     }
     41     printf("p1: %d\np2: %d\n", p1, p2);
     42     return 0;
     43 }