aoc2024/11/part1.c

62 lines
1.4 KiB
C

#include "_.h"
typedef struct structure {
long nbr;
struct structure *next;
} struc;
int main(int argc, char **argv) {
if (argc != 2)
return 1;
char *input = argv[1];
char **inputs = str_split(strdup(input), ' ');
struc *head = calloc(1, sizeof(struc));
struc *cur = head;
for (int i = 0; inputs[i] != NULL; i++) {
cur->nbr = atol(inputs[i]);
cur->next = calloc(1, sizeof(struc));
cur = cur->next;
}
for (int i = 0; i < 25; i++) {
cur = head;
for (int j = 0; cur->next != NULL; j++) {
if (cur->nbr == 0) {
cur->nbr = 1;
cur = cur->next;
}
else if (((long)floor(log10(ABS(cur->nbr))) + 1) % 2 == 0) {
double len = floor(log10(ABS(cur->nbr))) + 1;
long left = cur->nbr / (pow(10, len / 2));
long right = cur->nbr % (long)(pow(10, len / 2));
struc *new = calloc(1, sizeof(struc));
new->nbr = right;
new->next = cur->next;
cur->nbr = left;
cur->next = new;
cur = new->next;
}
else {
cur->nbr *= 2024;
cur = cur->next;
}
}
}
long count = 0;
cur = head;
while (cur->next != NULL) {
cur = cur->next;
count++;
}
printf("count: %ld\n", count);
return 0;
}