#include<iostream>
#include<cstring>
#include<cstdio>
#include<cmath>
#include<set>
#include<map>
#define db(a) \
cout << #a << " = " << a << endl
#define db2(a, b) \
cout << #a << " = " << a << " " << #b << " = " << b << endl
#define inf (1<<30)
#define foreach(it, m) \
for (typeof(m.begin()) it = m.begin(); it != m.end(); it++)
using namespace std;
map<char, char> m;
bool espali(string s) {
int n = s.size();
for (int i = 0; i < n / 2; i++) {
if (s[i] != s[n - i - 1])
return false;
}
return true;
}
bool esmirror(string s) {
int n = s.size();
for (int i = 0; i <= n / 2; i++)
if (s[i] != m[s[n - i - 1]])
return false;
return true;
}
int main() {
#ifdef dennisbot
freopen("in.in", "r", stdin);
freopen("ou.out", "w", stdout);
#endif
char s[30];
m['A'] = 'A'; m['M'] = 'M'; m['Y'] = 'Y';
m['B'] = '-'; m['N'] = '-'; m['Z'] = '5';
m['C'] = '-'; m['O'] = 'O'; m['1'] = '1';
m['D'] = '-'; m['P'] = '-'; m['2'] = 'S';
m['E'] = '3'; m['Q'] = '-'; m['3'] = 'E';
m['F'] = '-'; m['R'] = '-'; m['4'] = '-';
m['G'] = '-'; m['S'] = '2'; m['5'] = 'Z';
m['H'] = 'H'; m['T'] = 'T'; m['6'] = '-';
m['I'] = 'I'; m['U'] = 'U'; m['7'] = '-';
m['J'] = 'L'; m['V'] = 'V'; m['8'] = '8';
m['K'] = '-'; m['W'] = 'W'; m['9'] = '-';
m['L'] = 'J'; m['X'] = 'X';
bool pali, mirror;
while(gets(s) != NULL) {
pali = espali(s);
mirror = esmirror(s);
if (pali && mirror)
printf("%s -- is a mirrored palindrome.\n", s);
else
if (pali)
printf("%s -- is a regular palindrome.\n", s);
else
if (mirror)
printf("%s -- is a mirrored string.\n", s);
else
printf("%s -- is not a palindrome.\n", s);
puts("");
}
return 0;
}
here is the statementviernes, 13 de julio de 2012
401 - Palindromes, uva
Suscribirse a:
Enviar comentarios (Atom)
No hay comentarios:
Publicar un comentario