Optimization and cleanup

This commit is contained in:
Bill Rossi 2024-12-01 00:20:36 -05:00
parent 91fb1b03cc
commit b8a1300703

View File

@ -4,11 +4,14 @@
#include "../../lib/aoc.h" #include "../../lib/aoc.h"
// TODO figure this out dynamically
#define ARRAY_SIZE 1000
int main() { int main() {
char *line; char *line;
int left[1000]; int left[ARRAY_SIZE];
int right[1000]; int right[ARRAY_SIZE];
int index = 0; int index = 0;
while ((line = aoc_read_line()) != NULL) { while ((line = aoc_read_line()) != NULL) {
@ -19,22 +22,25 @@ int main() {
index++; index++;
} }
qsort(left, 1000, sizeof(int), aoc_sort_int); qsort(left, ARRAY_SIZE, sizeof(int), aoc_sort_int);
qsort(right, 1000, sizeof(int), aoc_sort_int); qsort(right, ARRAY_SIZE, sizeof(int), aoc_sort_int);
int sum = 0; int sum = 0;
for (int i = 0; i < 1000; i++) { for (int i = 0; i < ARRAY_SIZE; i++) {
sum += abs(left[i] - right[i]); sum += abs(left[i] - right[i]);
} }
printf("Part 1: %d\n", sum); printf("Part 1: %d\n", sum);
int similarity_score = 0; int similarity_score = 0;
for (int i = 0; i < 1000; i++) { int j = 0;
for (int i = 0; i < ARRAY_SIZE; i++) {
int right_count = 0; int right_count = 0;
for (int j = 0; j < 1000; j++) { for (; j < ARRAY_SIZE; j++) {
if (left[i] == right[j]) right_count++; if (left[i] == right[j]) right_count++;
else if (left[i] < right[j]) break;
} }
similarity_score += (left[i] * right_count); similarity_score += (left[i] * right_count);
} }