#include #include #define NOPAL 0 #define PAL 1 #define MIR 2 #define MPAL 3 char line[200]; int ScanMe() { int half = (int)(strlen(line) / 2.0 + 0.5); int len = strlen(line); bool pal = true; bool mir = true; for(int i = 0; i < half; i++) { char z1 = line[i]; char z2 = line[len-i-1]; if (z1 != z2) pal = false; if (z1 == 'A' && z2 != 'A') mir = false; if (z1 == 'E' && z2 != '3') mir = false; if (z1 == 'H' && z2 != 'H') mir = false; if (z1 == 'I' && z2 != 'I') mir = false; if (z1 == 'J' && z2 != 'L') mir = false; if (z1 == 'L' && z2 != 'J') mir = false; if (z1 == 'M' && z2 != 'M') mir = false; if (z1 == 'O' && z2 != 'O') mir = false; if (z1 == 'S' && z2 != '2') mir = false; if (z1 == 'T' && z2 != 'T') mir = false; if (z1 == 'U' && z2 != 'U') mir = false; if (z1 == 'V' && z2 != 'V') mir = false; if (z1 == 'W' && z2 != 'W') mir = false; if (z1 == 'X' && z2 != 'X') mir = false; if (z1 == 'Y' && z2 != 'Y') mir = false; if (z1 == 'Z' && z2 != '5') mir = false; if (z1 == '1' && z2 != '1') mir = false; if (z1 == '2' && z2 != 'S') mir = false; if (z1 == '3' && z2 != 'E') mir = false; if (z1 == '5' && z2 != 'Z') mir = false; if (z1 == '8' && z2 != '8') mir = false; // if (z1 == 'A' && z2 != 'A') mir = false; if (pal == false && mir == false) return 0; } if (pal && !mir) return 1; if (!pal && mir) return 2; return 3; } int main() { int err = scanf("%s\n", line); while(err != EOF) { int s = ScanMe(); printf("%s", line); if (s == NOPAL) printf(" -- is not a palindrome.\n"); if (s == PAL) printf(" -- is a regular palindrome.\n"); if (s == MIR) printf(" -- is a mirrored string.\n"); if (s == MPAL) printf(" -- is a mirrored palindrome.\n"); err = scanf("%s\n", line); } return 0; }