commit 60bfcfb33293320a139d24e57b6c4867784b6e09
parent 428ea151e9c74061dda091c01b53f74c3ce95427
Author: bsandro <email@bsandro.tech>
Date: Tue, 2 Dec 2025 18:29:48 +0200
makefile fix
Diffstat:
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;