Finished day 1 in C!
This commit is contained in:
parent
be61888c85
commit
e742759626
3
2021/1/.gitignore
vendored
Normal file
3
2021/1/.gitignore
vendored
Normal file
@ -0,0 +1,3 @@
|
||||
depth
|
||||
depth2
|
||||
input
|
11
2021/1/Makefile
Normal file
11
2021/1/Makefile
Normal file
@ -0,0 +1,11 @@
|
||||
.PHONY := all yeet
|
||||
|
||||
all: build run
|
||||
|
||||
build:
|
||||
gcc -o depth depth.c
|
||||
gcc -o depth2 depth2.c
|
||||
|
||||
run:
|
||||
./depth
|
||||
./depth2
|
28
2021/1/depth.c
Normal file
28
2021/1/depth.c
Normal file
@ -0,0 +1,28 @@
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <limits.h>
|
||||
|
||||
int main() {
|
||||
|
||||
FILE *input = fopen("input", "r");
|
||||
|
||||
if(input == NULL) {
|
||||
printf("oh noes couldn't open the input file lol\n");
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
||||
char line[255];
|
||||
int count = 0, last_num = INT_MAX;
|
||||
while(fgets(line, sizeof(line), input) != NULL) {
|
||||
int cur_num = atoi(line);
|
||||
|
||||
count += cur_num > last_num;
|
||||
last_num = cur_num;
|
||||
}
|
||||
|
||||
fclose(input);
|
||||
|
||||
printf("There were %d measurements larger than the last.\n", count);
|
||||
|
||||
}
|
55
2021/1/depth2.c
Normal file
55
2021/1/depth2.c
Normal file
@ -0,0 +1,55 @@
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <limits.h>
|
||||
|
||||
#define WINDOW_SIZE 3
|
||||
|
||||
int main() {
|
||||
|
||||
FILE *input = fopen("input", "r");
|
||||
|
||||
if(input == NULL) {
|
||||
printf("oh noes couldn't open the input file lol\n");
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
||||
char line[255];
|
||||
int index = 0, count = 0, last_num = INT_MAX;
|
||||
int windows[WINDOW_SIZE][WINDOW_SIZE];
|
||||
|
||||
while(fgets(line, sizeof(line), input) != NULL) {
|
||||
int cur_num = atoi(line),
|
||||
cur_index = index % (WINDOW_SIZE);
|
||||
|
||||
// Put values diagonal into the 3x3 grid, like this
|
||||
// A B C
|
||||
// B C A
|
||||
// C A B
|
||||
for(int i=0; i<WINDOW_SIZE; i++){
|
||||
int cur_col = (cur_index + i) % WINDOW_SIZE;
|
||||
windows[i][cur_col] = cur_num;
|
||||
}
|
||||
|
||||
index++;
|
||||
if(index < WINDOW_SIZE) // skip first 3 values
|
||||
continue;
|
||||
|
||||
// Calculate average for current column, e.g.
|
||||
// A B C
|
||||
// B C A
|
||||
// C A B
|
||||
// ^
|
||||
int sum = 0;
|
||||
for(int i=0; i<WINDOW_SIZE; i++)
|
||||
sum += windows[cur_index][i];
|
||||
|
||||
count += sum > last_num;
|
||||
last_num = sum;
|
||||
}
|
||||
|
||||
fclose(input);
|
||||
|
||||
printf("There were %d measurements larger than the last.\n", count);
|
||||
|
||||
}
|
@ -2,6 +2,9 @@
|
||||
|
||||
Heya! This is my advent of code repo (as you might have guessed). In here you'll find my solutions of the advent of code exercises.
|
||||
|
||||
# 2021
|
||||
|
||||
So similar to last year, a different language each day. Different though: I pick the language myself instead of using the little seeded ransomizer. Hopefully this helps with me finishing it when I am busy that day (by picking a language I already know).
|
||||
|
||||
## 2020
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user