#include <stdio.h>
#include <string.h>
#include <stdbool.h>
bool halves_equal(int n) {
char buf[32];
snprintf(buf, sizeof(buf), "%d", n);
size_t len = strlen(buf);
if (len % 2 != 0)
return false; // cannot split evenly
size_t half = len / 2;
return strncmp(buf, buf + half, half) == 0;
}
int main(void) {
int testNumbers[] = {1212, 123123, 45454545, 123, 1213};
size_t count = sizeof(testNumbers) / sizeof(testNumbers[0]);
for (size_t i = 0; i < count; i++) {
int n = testNumbers[i];
printf("%d -> %s\n",
n,
halves_equal(n) ? "equal halves" : "not equal");
}
return 0;
}
/*
run:
1212 -> equal halves
123123 -> equal halves
45454545 -> equal halves
123 -> not equal
1213 -> not equal
*/