solution has been delivered for u,,, sirs
#define _GNU_SOURCE
#include <stdio.h>
#include <stdlib.h>
#include <stdint.h>
#include <inttypes.h>
#include <string.h>
uint64_t sum = 0;
int check_halves(char *str, size_t len) {
char buf[256]={0};
strncpy(buf, str, len/2);
strncpy(buf+len/2, str, len/2);
if (!strcmp(buf, str)) {
printf("%s is valid halfie\n", str);
return 0;
}
//printf("buf: %s, str: %s, len=%lu\n", buf, str, len);
return 1;
}
uint64_t is_invalid(uint64_t num) {
char buf[256];
sprintf(buf, "%" SCNu64, num);
size_t length = strlen(buf);
if (length % 2 != 0)
return 0; // must have even amount of numbers to be invalid
if (!check_halves(buf, length)) {
printf("%" SCNu64 " is invalid...\n", num);
return num;
}
return 0;
}
int main(void) {
ssize_t r;
size_t len = 0;
char *line = NULL;
FILE *f = fopen("input_fixed.txt", "r");
while ((r = getline(&line, &len, f)) != -1) {
uint64_t start = 0;
uint64_t end = 0;
sscanf(line, "%" SCNu64 "-%" SCNu64, &start, &end);
printf("start=%" PRIu64 ", end=%" PRIu64 "\n", start, end);
for(uint64_t i=start; i<=end; i++) {
sum += is_invalid(i);
}
}
printf("%" SCNu64 "\n", sum);
fclose(f);
return 0;
}