#include #include #define MAXS 23 typedef char str[30]; int getline(char *s) { int n; if (fgets(s,MAXS,stdin) == NULL) return 0; n = strlen(s); if (n == 0) return 0; n--; while (n>=0 && s[n] == '\n') n--; s[++n] = 0; return n; } char mi[256]; int main(void) { str s; int n; int pal, mir; char c, d; char *p, *q; mi['A'] = 'A'; mi['E'] = '3'; mi['H'] = 'H'; mi['I'] = 'I'; mi['J'] = 'L'; mi['L'] = 'J'; mi['M'] = 'M'; mi['O'] = 'O'; mi['S'] = '2'; mi['T'] = 'T'; mi['U'] = 'U'; mi['V'] = 'V'; mi['W'] = 'W'; mi['X'] = 'X'; mi['Y'] = 'Y'; mi['Z'] = '5'; mi['1'] = '1'; mi['2'] = 'S'; mi['3'] = 'E'; mi['5'] = 'Z'; mi['8'] = '8'; while ((n = getline(s)) != 0) { /* printf("%d: ",n);puts(s);*/ p = s; q = &s[n - 1]; pal = mir = 1; while (p <= q && (pal || mir)) { c = *p; d = *q; if (c != d) pal = 0; if (c != mi[d]) mir = 0; p++; q--; } printf("%s -- is ",s); if (pal) { if (mir) printf("a mirrored palindrome."); else printf("a regular palindrome."); } else { if (mir) printf("a mirrored string."); else printf("not a palindrome."); } putchar('\n'); } return 0; }