Index: aoc2025.c ================================================================== --- aoc2025.c +++ aoc2025.c @@ -40,35 +40,35 @@ *destin = '@'; } } else if (cc != 0) { *destin = '.'; } else { - *destin = 0; // shouldn't happen + *destin = 0; // shouldn't happen, except beyond borders } } } return changes; } void aoc202504(char *data, size_t len) { (void)len; // unused argument struct RectangularMap rm[2] = {0}; - while (*data) { + 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 and skip it + *data++ = '\n'; // unerase newline (obviously!) and skip it } unsigned part1 = evolve(rm, 0); // evolve from rm[0] to rm[1] unsigned part2 = part1, src = 1; for (;;) { unsigned tmp = evolve(rm, src); // keep evolving - if (tmp == 0) break; // STOP - src = 1 - src; // back and forth - part2 += tmp; // add changes in this round + if (tmp == 0) break; // STOP // back and forth + src = 1 - src; // between rm[1] and rm[0] + part2 += tmp; // add changes from this round } printf("P1: %u; P2: %u\n", part1, part2); RMfree(rm); RMfree(rm + 1); }