Add aoc03.

This commit is contained in:
2025-12-03 10:13:31 +01:00
parent 7db167dd6d
commit a3b11b628c
4 changed files with 61 additions and 0 deletions

2
03-joltage/.gitignore vendored Normal file
View File

@@ -0,0 +1,2 @@
aoc3
*.o

12
03-joltage/Makefile Normal file
View File

@@ -0,0 +1,12 @@
all: test
.PHONY: test clean
aoc3: aoc3.c
cc -O2 -o $@ $<
clean:
-rm -f aoc3
test: aoc3
./aoc3 < input01.txt

47
03-joltage/aoc3.c Normal file
View File

@@ -0,0 +1,47 @@
#include <stdio.h>
#include <stdlib.h>
#include <stdint.h>
int main(void)
{
uint64_t total = 0;
uint8_t max = 0;
uint8_t prev = 0;
int8_t after = -1;
while (1) {
char c = getchar();
if (c >= '0' && c <= '9') {
uint8_t digit = c - '0';
if (digit > max) {
prev = max;
max = digit;
after = -1;
} else {
if (digit > after) {
after = digit;
}
}
} else if (c == '\n' || c == EOF) {
if (after == -1) {
// special case: max is the last digit
total += 10*prev + max;
} else {
total += 10*max + after;
}
max = 0;
prev = 0;
after = -1;
if (c == EOF) break;
} else {
fprintf(stderr, "weird character: %02x\n", c);
exit(1);
}
}
printf("%ld\n", total);
return 0;
}