viernes, 13 de julio de 2012

401 - Palindromes, uva

#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 statement

No hay comentarios:

Publicar un comentario