#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>
#define ROWS 100
#define COLUMNS 100
char matrix[ROWS][COLUMNS];
void generate_matrix() {
for (int i = 0; i < ROWS; i++)
for (int j = 0; j < COLUMNS; j++)
matrix
[i
][j
] = 'A' + (rand() % 26);}
int is_palindrome(const char *str, int len) {
for (int i = 0; i < len / 2; i++)
if (str[i] != str[len - i - 1])
return 0;
return 1;
}
int count_palindromes(int size) {
int count = 0;
char temp[10];
for (int i = 0; i < ROWS; i++)
for (int j = 0; j <= COLUMNS - size; j++) {
for (int k = 0; k < size; k++)
temp[k] = matrix[i][j + k];
temp[size] = '\0';
if (is_palindrome(temp, size)) count++;
}
return count;
}
int main() {
generate_matrix();
int total = count_palindromes(3);
printf("Palindromes of size 3: %d\n", total
); printf("Time: %f seconds\n", (double)(end
- start
) / CLOCKS_PER_SEC
);
return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdGRsaWIuaD4KI2luY2x1ZGUgPHN0cmluZy5oPgojaW5jbHVkZSA8dGltZS5oPgoKI2RlZmluZSBST1dTIDEwMAojZGVmaW5lIENPTFVNTlMgMTAwCgpjaGFyIG1hdHJpeFtST1dTXVtDT0xVTU5TXTsKCnZvaWQgZ2VuZXJhdGVfbWF0cml4KCkgewogICAgZm9yIChpbnQgaSA9IDA7IGkgPCBST1dTOyBpKyspCiAgICAgICAgZm9yIChpbnQgaiA9IDA7IGogPCBDT0xVTU5TOyBqKyspCiAgICAgICAgICAgIG1hdHJpeFtpXVtqXSA9ICdBJyArIChyYW5kKCkgJSAyNik7Cn0KCmludCBpc19wYWxpbmRyb21lKGNvbnN0IGNoYXIgKnN0ciwgaW50IGxlbikgewogICAgZm9yIChpbnQgaSA9IDA7IGkgPCBsZW4gLyAyOyBpKyspCiAgICAgICAgaWYgKHN0cltpXSAhPSBzdHJbbGVuIC0gaSAtIDFdKQogICAgICAgICAgICByZXR1cm4gMDsKICAgIHJldHVybiAxOwp9CgppbnQgY291bnRfcGFsaW5kcm9tZXMoaW50IHNpemUpIHsKICAgIGludCBjb3VudCA9IDA7CiAgICBjaGFyIHRlbXBbMTBdOwoKICAgIGZvciAoaW50IGkgPSAwOyBpIDwgUk9XUzsgaSsrKQogICAgICAgIGZvciAoaW50IGogPSAwOyBqIDw9IENPTFVNTlMgLSBzaXplOyBqKyspIHsKICAgICAgICAgICAgZm9yIChpbnQgayA9IDA7IGsgPCBzaXplOyBrKyspCiAgICAgICAgICAgICAgICB0ZW1wW2tdID0gbWF0cml4W2ldW2ogKyBrXTsKICAgICAgICAgICAgdGVtcFtzaXplXSA9ICdcMCc7CiAgICAgICAgICAgIGlmIChpc19wYWxpbmRyb21lKHRlbXAsIHNpemUpKSBjb3VudCsrOwogICAgICAgIH0KICAgIHJldHVybiBjb3VudDsKfQoKaW50IG1haW4oKSB7CiAgICBzcmFuZCh0aW1lKE5VTEwpKTsKICAgIGdlbmVyYXRlX21hdHJpeCgpOwoKICAgIGNsb2NrX3Qgc3RhcnQgPSBjbG9jaygpOwogICAgaW50IHRvdGFsID0gY291bnRfcGFsaW5kcm9tZXMoMyk7CiAgICBjbG9ja190IGVuZCA9IGNsb2NrKCk7CgogICAgcHJpbnRmKCJQYWxpbmRyb21lcyBvZiBzaXplIDM6ICVkXG4iLCB0b3RhbCk7CiAgICBwcmludGYoIlRpbWU6ICVmIHNlY29uZHNcbiIsIChkb3VibGUpKGVuZCAtIHN0YXJ0KSAvIENMT0NLU19QRVJfU0VDKTsKCiAgICByZXR1cm4gMDsKfQo=