Compare commits

...

2 Commits

Author SHA1 Message Date
f43acb06fe use that sort 2025-12-05 16:36:57 -06:00
e851e48f1e don't manually unroll your loops, kids 2025-12-05 16:35:26 -06:00
2 changed files with 12 additions and 15 deletions

6
day5.c
View File

@@ -131,10 +131,8 @@ unsigned long do_part2(size_t file_len, unsigned char file[file_len]) {
d++;
} while (*s != '\n');
#if PRETTY
size_t range_cnt = d - ranges;
qsort(ranges, range_cnt, sizeof(*ranges), linecmp);
#endif
d->sv = 0;
@@ -147,12 +145,10 @@ unsigned long do_part2(size_t file_len, unsigned char file[file_len]) {
bcdint djs = dj->sv;
bcdint dje = dj->ev;
if (djs == -1) continue;
if (djs > die) continue outer;
if (djs <= die && djs >= dis) {
djs = bcdadd(die, 1);
}
if (dje >= dis && dje <= die) {
dje = bcdsub(dis, 1);
}
if (djs == dj->sv && dje == dj->ev)
continue;
if (dje < djs) {

21
lib.h
View File

@@ -232,16 +232,17 @@ static num bcdtonum(bcdint a) {
+ ((a >> 8) & 0xF) * 100
+ ((a >> 12) & 0xF) * 1000
+ ((a >> 16) & 0xF) * 10000
+ ((a >> 24) & 0xF) * 100000
+ ((a >> 28) & 0xF) * 1000000
+ ((a >> 32) & 0xF) * 10000000
+ ((a >> 36) & 0xF) * 100000000
+ ((a >> 40) & 0xF) * 1000000000
+ ((a >> 44) & 0xF) * 10000000000
+ ((a >> 48) & 0xF) * 100000000000
+ ((a >> 52) & 0xF) * 1000000000000
+ ((a >> 56) & 0xF) * 10000000000000
+ ((a >> 60) & 0xF) * 100000000000000;
+ ((a >> 20) & 0xF) * 100000
+ ((a >> 24) & 0xF) * 1000000
+ ((a >> 28) & 0xF) * 10000000
+ ((a >> 32) & 0xF) * 100000000
+ ((a >> 36) & 0xF) * 1000000000
+ ((a >> 40) & 0xF) * 10000000000
+ ((a >> 44) & 0xF) * 100000000000
+ ((a >> 48) & 0xF) * 1000000000000
+ ((a >> 52) & 0xF) * 10000000000000
+ ((a >> 56) & 0xF) * 100000000000000
+ ((a >> 60) & 0xF) * 1000000000000000;
}
static bcdint numtobcd(num a) {