advent2025

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

commit bce08140c1fe98bd14e4d19f67b4785b27da8e87
parent 696c97dfbc0044eae886826da74fb6176b3364e0
Author: bsandro <email@bsandro.tech>
Date:   Tue,  9 Dec 2025 00:42:07 +0200

day08 works with test and real inputs without recompiling

Diffstat:
Mday08.c | 22++++++++++++----------
1 file changed, 12 insertions(+), 10 deletions(-)

diff --git a/day08.c b/day08.c @@ -118,15 +118,12 @@ static int circuits_merge(int circuits_l, Circuit *circuits) { return new_len; } -#define POINTS 1000 -#define CONNS 1000 -//#define POINTS 20 -//b#define CONNS 10 +#define MAX_POINTS 1000 int main(void) { uint64_t part1 = 0; uint64_t part2 = 0; - Point *points = calloc(POINTS, sizeof(Point)); + Point *points = calloc(MAX_POINTS, sizeof(Point)); int points_l = 0; int *n = points[0].n; int buf[16] = {0}; @@ -139,12 +136,17 @@ int main(void) { n++; if (c=='\n') n = points[++points_l].n; } + if (points_l>MAX_POINTS) { + printf("Too many input points, max: %d\n", MAX_POINTS); + return 1; + } } - const int dists_cnt = (POINTS*POINTS-POINTS)/2; + const int dists_cnt = (points_l*points_l-points_l)/2; + const int conns_cnt = dists_cnt<1000 ? 10 : 1000; Distance *dists = calloc(dists_cnt, sizeof(Distance)); int dists_l = 0; - for (size_t i1=0;i1<POINTS;++i1) { - for (size_t i2=0;i2<POINTS;++i2) { + for (int i1=0;i1<points_l;++i1) { + for (int i2=0;i2<points_l;++i2) { if (i1==i2) continue; Point *p1 = &points[i1]; Point *p2 = &points[i2]; @@ -155,9 +157,9 @@ int main(void) { } } qsort(dists, dists_l, sizeof(Distance), cmp_dist); - Circuit *circuits = calloc(CONNS*2, sizeof(Circuit)); + Circuit *circuits = calloc(conns_cnt*2, sizeof(Circuit)); int circuits_l = 0; - for (int i=0;i<CONNS;++i) { + for (int i=0;i<conns_cnt;++i) { circuits_add(&circuits_l, circuits, &dists[i]); circuits_l = circuits_merge(circuits_l, circuits); }