prettier
This commit is contained in:
38
day5.c
38
day5.c
@@ -1,4 +1,5 @@
|
||||
#include "lib.h"
|
||||
#include <stdlib.h>
|
||||
|
||||
#define DBG 0
|
||||
#define PRETTY 1
|
||||
@@ -38,6 +39,15 @@ struct line {
|
||||
alignas(0x40) static
|
||||
struct line ranges[256];
|
||||
|
||||
static
|
||||
int linecmp(const void *av, const void *bv) {
|
||||
const struct line *a = av;
|
||||
const struct line *b = bv;
|
||||
if (a->sv < b->sv) return -1;
|
||||
else if (a->sv > b->sv) return 1;
|
||||
else return 0;
|
||||
}
|
||||
|
||||
static
|
||||
unsigned long do_part1(size_t file_len, unsigned char file[file_len]) {
|
||||
unsigned char *s = file;
|
||||
@@ -66,13 +76,13 @@ unsigned long do_part1(size_t file_len, unsigned char file[file_len]) {
|
||||
s++;
|
||||
d++;
|
||||
} while (*s != '\n');
|
||||
d->sv = 0;
|
||||
|
||||
#if PRETTY
|
||||
d->pad0[0] = 'F';
|
||||
d->pad0[1] = 'I';
|
||||
d->pad0[2] = 'N';
|
||||
d->pad0[3] = 'I';
|
||||
size_t range_cnt = d - ranges;
|
||||
qsort(ranges, range_cnt, sizeof(*ranges), linecmp);
|
||||
#endif
|
||||
|
||||
d->sv = 0;
|
||||
s++;
|
||||
|
||||
do {
|
||||
@@ -108,32 +118,32 @@ unsigned long do_part2(size_t file_len, unsigned char file[file_len]) {
|
||||
unsigned char *tmp;
|
||||
d->sv = grabbcd(s, &tmp);
|
||||
#if PRETTY
|
||||
snprintd(d->sv, sizeof(d->s), d->s);
|
||||
snprinth(d->sv, sizeof(d->s), d->s);
|
||||
#endif
|
||||
s = tmp;
|
||||
s++;
|
||||
d->ev = grabbcd(s, &tmp);
|
||||
#if PRETTY
|
||||
snprintd(d->ev, sizeof(d->e), d->e);
|
||||
snprinth(d->ev, sizeof(d->e), d->e);
|
||||
#endif
|
||||
s = tmp;
|
||||
s++;
|
||||
d++;
|
||||
} while (*s != '\n');
|
||||
d->sv = 0;
|
||||
|
||||
#if PRETTY
|
||||
d->pad0[0] = 'F';
|
||||
d->pad0[1] = 'I';
|
||||
d->pad0[2] = 'N';
|
||||
d->pad0[3] = 'I';
|
||||
size_t range_cnt = d - ranges;
|
||||
qsort(ranges, range_cnt, sizeof(*ranges), linecmp);
|
||||
#endif
|
||||
|
||||
d->sv = 0;
|
||||
|
||||
outer:
|
||||
for (struct line *di = ranges; di->sv; di++) {
|
||||
bcdint dis = di->sv;
|
||||
bcdint die = di->ev;
|
||||
if (dis == -1) continue;
|
||||
for (struct line *dj = ranges; dj->sv; dj++) {
|
||||
if (dj == di) continue;
|
||||
for (struct line *dj = di+1; dj->sv; dj++) {
|
||||
bcdint djs = dj->sv;
|
||||
bcdint dje = dj->ev;
|
||||
if (djs == -1) continue;
|
||||
|
||||
Reference in New Issue
Block a user