advent2025

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

commit 60bfcfb33293320a139d24e57b6c4867784b6e09
parent 428ea151e9c74061dda091c01b53f74c3ce95427
Author: bsandro <email@bsandro.tech>
Date:   Tue,  2 Dec 2025 18:29:48 +0200

makefile fix

Diffstat:
MMakefile | 9+++++++--
Mday02.c | 17+++++++++--------
2 files changed, 16 insertions(+), 10 deletions(-)

diff --git a/Makefile b/Makefile @@ -1,8 +1,13 @@ .SUFFIXES: MAKEFLAGS+=-rR -CFLAGS=-O3 -std=gnu99 -Werror -Wall -Wextra -ffast-math -march=native -mtune=native -I. +CFLAGS=-O3 -std=gnu99 -Werror -Wall -Wextra -ffast-math -I. +ifeq ($(shell uname -m),riscv64) +CFLAGS+=-mtune=sifive-u74 +else +CFLAGS+=-mtune=native -march=native +endif LDFLAGS=-lc -lm -CC=cc +CC=clang .PHONY: clean diff --git a/day02.c b/day02.c @@ -10,17 +10,17 @@ typedef struct Range { uint64_t last; } Range; -inline int digits(uint64_t num) { +int digits(uint64_t num) { return log10l(num)+1; } -inline uint64_t btoi(uint64_t buf[32], int bufs) { +uint64_t btoi(uint64_t buf[16], int bufs) { uint64_t num = 0; for (int i=0;i<bufs;++i) num = num*10+buf[i]; return num; } -inline void itoa(uint64_t num, char str[32]) { +void itoa(uint64_t num, char str[16]) { int d = digits(num); for (int i=d-1;i>=0;--i) { str[i] = num%10+'0'; @@ -29,7 +29,7 @@ inline void itoa(uint64_t num, char str[32]) { str[d] = '\0'; } -inline bool is_silly1(uint64_t num) { +bool is_silly1(uint64_t num) { int d = digits(num); if (d%2==0) { long shift = powl(10, d/2); @@ -40,11 +40,12 @@ inline bool is_silly1(uint64_t num) { return false; } -inline bool is_silly2(uint64_t num) { +bool is_silly2(uint64_t num) { int d = digits(num); - char s[32] = {0}; + char s[16]; itoa(num, s); for (int i=1;i<=d/2;++i) { // checking pattern 0-i + if (d%i!=0) continue; int rep = 0; for (int j=0;j<d;j+=i) { rep |= strncmp(s, s+j, i); @@ -54,7 +55,7 @@ inline bool is_silly2(uint64_t num) { return false; } -inline uint64_t sum_silly(Range range, bool (*check_silly)(uint64_t)) { +uint64_t sum_silly(Range range, bool (*check_silly)(uint64_t)) { uint64_t sum = 0; for (uint64_t i=range.first;i<=range.last;++i) { if (check_silly(i)) sum+=i; @@ -63,7 +64,7 @@ inline uint64_t sum_silly(Range range, bool (*check_silly)(uint64_t)) { } int main(void) { - uint64_t buf[32] = {0}; + uint64_t buf[16] = {0}; int bufs = 0; Range range = {0}; uint64_t p1 = 0;