24-01
This commit is contained in:
parent
924caa936c
commit
b5f4daede9
@ -9,7 +9,7 @@
|
||||
#define MIN(x, y) (x) < (y) ? (x) : (y)
|
||||
|
||||
char *md5_str(const char *);
|
||||
|
||||
Vector *string_to_int_vector(const char *input_string, const char *delim);
|
||||
int int_comp(const void *a, const void *b);
|
||||
|
||||
#endif
|
||||
|
@ -1,10 +1,58 @@
|
||||
#include <limits.h>
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
|
||||
#include "lfinput.h"
|
||||
#include "advent_utility.h"
|
||||
|
||||
void advent2024day01(void) {
|
||||
char *input = get_input("input/2024/01");
|
||||
printf("Solution for Day 01 of 2024 is not completed yet\n");
|
||||
free(input);
|
||||
size_t sz = 0;
|
||||
char **input = get_lines("input/2024/01", &sz);
|
||||
int a[sz];
|
||||
int b[sz];
|
||||
const char* errstr;
|
||||
|
||||
for (size_t i = 0; i < sz; i++) {
|
||||
size_t sp_sz = 0;
|
||||
char **sp = split(input[i], &sp_sz, " ");
|
||||
|
||||
a[i] = (int)strtonum(sp[0], INT_MIN, INT_MAX, &errstr);
|
||||
if (errstr != NULL) {
|
||||
printf("ERR: %s\n", errstr);
|
||||
free(sp);
|
||||
break;
|
||||
}
|
||||
|
||||
b[i] = (int)strtonum(sp[1], INT_MIN, INT_MAX, &errstr);
|
||||
if (errstr != NULL) {
|
||||
printf("ERR: %s\n", errstr);
|
||||
free(sp);
|
||||
break;
|
||||
}
|
||||
free(sp);
|
||||
}
|
||||
|
||||
qsort(a, sz, sizeof(int), int_comp);
|
||||
qsort(b, sz, sizeof(int), int_comp);
|
||||
|
||||
int p1 = 0;
|
||||
for (size_t i = 0; i < sz; i++) {
|
||||
p1 += abs(a[i] - b[i]);
|
||||
}
|
||||
|
||||
printf("%d\n", p1);
|
||||
|
||||
int p2 = 0;
|
||||
for (size_t i = 0; i < sz; i++) {
|
||||
int c = 0;
|
||||
for (size_t j = 0; j < sz; j++) {
|
||||
if (a[i] == b[j]) {
|
||||
++c;
|
||||
}
|
||||
}
|
||||
p2 += a[i] * c;
|
||||
}
|
||||
|
||||
printf("%d\n", p2);
|
||||
|
||||
del_lines(input);
|
||||
}
|
||||
|
@ -51,3 +51,6 @@ Vector *string_to_int_vector(const char *input_string, const char* delim) {
|
||||
return v;
|
||||
}
|
||||
|
||||
int int_comp(const void *a, const void *b) {
|
||||
return *(int *) a - *(int *) b;
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user