commit 58582e7e353c9696bd4760258a4402247dc1babd
parent 60bfcfb33293320a139d24e57b6c4867784b6e09
Author: bsandro <email@bsandro.tech>
Date: Tue, 2 Dec 2025 22:24:20 +0200
day 02 silly optimization
Diffstat:
1 file changed, 11 insertions(+), 9 deletions(-)
diff --git a/day02.c b/day02.c
@@ -55,20 +55,23 @@ bool is_silly2(uint64_t num) {
return false;
}
-uint64_t sum_silly(Range range, bool (*check_silly)(uint64_t)) {
- uint64_t sum = 0;
+struct Res {
+ uint64_t p1;
+ uint64_t p2;
+};
+
+void sum_silly(Range range, struct Res *r) {
for (uint64_t i=range.first;i<=range.last;++i) {
- if (check_silly(i)) sum+=i;
+ if (is_silly1(i)) r->p1+=i;
+ if (is_silly2(i)) r->p2+=i;
}
- return sum;
}
int main(void) {
uint64_t buf[16] = {0};
int bufs = 0;
Range range = {0};
- uint64_t p1 = 0;
- uint64_t p2 = 0;
+ struct Res r = {0};
for (int c=getchar();c!=EOF;c=getchar()) {
if (c>='0'&&c<='9') {
buf[bufs++] = c-'0';
@@ -78,10 +81,9 @@ int main(void) {
} else if (c==','||c=='\n') {
range.last = btoi(buf, bufs);
bufs = 0;
- p1 += sum_silly(range, is_silly1);
- p2 += sum_silly(range, is_silly2);
+ sum_silly(range, &r);
}
}
- printf("p1: %" PRIu64 "\np2: %" PRIu64 "\n", p1, p2);
+ printf("p1: %" PRIu64 "\np2: %" PRIu64 "\n", r.p1, r.p2);
return 0;
}