Advent of Code

Diff
Login

Diff

Differences From Artifact [2a923d68eb]:

To Artifact [b18c3d1b41]:


11
12
13
14
15
16
17











































18
19
20
21
22
23
24
/* === aocYYYYDD =======================================================
===================================================================== */
void aocYYYYDD(char *data, size_t len) {
    (void)len; // unused argument
}

#endif












































/* === aoc202506 =======================================================
===================================================================== */
static long long unsigned add2506(long long unsigned v[4][1024], int lin, int col) {
    long long unsigned sum = 0;
    for (int k = 0; k < lin; k++) sum += v[k][col];
    return sum;







>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>







11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
/* === aocYYYYDD =======================================================
===================================================================== */
void aocYYYYDD(char *data, size_t len) {
    (void)len; // unused argument
}

#endif

/* === aoc202507 =======================================================
===================================================================== */
static unsigned tachyon_splits(struct RectangularMap *rm) {
    unsigned count = 0;
    for (int row = 0; row < rm->rows; row++) {
        for (int col = 0; col < rm->cols; col++) {
            char cc = RMcharat(rm, col, row);
            if ((cc == 'S') || (cc == '|')) {
                char *pc = RMcharptr(rm, col, row+1);
                if (pc == NULL) continue;
                if (*pc == '.') {
                    *pc = '|';
                } else if (*pc == '^') {
                    *(pc - 1) = *(pc + 1) = '|';
                    count++;
                } else if (*pc == '|') {
                    /* do nothing */
                } else {
                    /* do nothing */
                }
            }
        }
    }
    return count;
}

void aoc202507(char *data, size_t len) {
    (void)len; // unused argument
    struct RectangularMap rm[2] = {0};
    while (*data) {                      // copy from data to rms
        char *data2 = data;
        while (*data != '\n') data++;
        *data = 0; // erase newline
        RMaddline(rm + 0, data2);
        RMaddline(rm + 1, data2); // set both rm's to the same thing
        *data++ = '\n'; // unerase newline (obviously!) and skip it
    }
    unsigned part1 = tachyon_splits(rm);
    printf("P1: %u\n", part1);
    RMfree(rm);
    RMfree(rm + 1);
}

/* === aoc202506 =======================================================
===================================================================== */
static long long unsigned add2506(long long unsigned v[4][1024], int lin, int col) {
    long long unsigned sum = 0;
    for (int k = 0; k < lin; k++) sum += v[k][col];
    return sum;