commit f8c9aba703d0afde7331fb3a7fa15321957157a4 Author: Zhongheng Liu Date: Sun Dec 14 14:25:12 2025 +0100 feat: 1: safe rotating lock diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..162238c --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +**/*.input diff --git a/day1.c b/day1.c new file mode 100644 index 0000000..cd094fa --- /dev/null +++ b/day1.c @@ -0,0 +1,46 @@ +#include +#include +#include +#include +#include + +int dial_translate(int pos, int offset) { + int final = pos + offset; + int fpos = final; + if (final < 0) {fpos = 100 + final;} + if (final >= 100) {fpos = final - 100;} + return fpos % 100; +} + +int main() { + int pos = 50; + int count = 0; + int fd = open("./day1.input", O_RDONLY); + struct stat stat; + fstat(fd, &stat); + char charbuf[stat.st_size]; + read(fd, charbuf, stat.st_size); + printf("Size: %d\n", stat.st_size); + int p; + for (p = 0; p < (sizeof(charbuf) - sizeof(char)); p++) { + char cur = charbuf[p]; + int direction; + if (cur == 'L') {direction = -1;} + else if (cur == 'R') {direction = 1;} + p++; + int i = 0; + char numline[100] = {0}; + while (charbuf[p] != '\n') { + numline[i] = charbuf[p]; + i++; + p++; + } + int offset = atoi(numline) * direction; + printf("Offset: %d\n", offset); + pos = dial_translate(pos, offset); + if (pos == 0) { count++; } + printf("Dial at: %d\n", pos); + } + printf("Password: %d\n", count); + return 0; +}