#include<stdio.h>
#include<string.h>
int isPal(char[]);
int isMirror(char[]);
int main()
{
char str[25];
int p,m,f=1;
//freopen("in.txt","r",stdin);
while(scanf("%s",str)==1)
{
p=isPal(str);
m=isMirror(str);
if(p)
{
if(m)printf("%s -- is a mirrored palindrome.\n\n",str);
else printf("%s -- is a regular palindrome.\n\n",str);
}
else
{
if(m)printf("%s -- is a mirrored string.\n\n",str);
else printf("%s -- is not a palindrome.\n\n",str);
}
}
return 0;
}
//function to check mirrored string
int isMirror(char str[])
{
char mstr[25];
int i,l=strlen(str);
for(i=0;str[i];i++)mstr[i]=str[i];
mstr[i]='\0';
for(i=0;mstr[i];i++)
{
switch(mstr[i])
{
case 'E':mstr[i]='3';break;
case '3':mstr[i]='E';break;
case 'J':mstr[i]='L';break;
case 'L':mstr[i]='J';break;
case 'S':mstr[i]='2';break;
case '2':mstr[i]='S';break;
case 'Z':mstr[i]='5';break;
case '5':mstr[i]='Z';break;
case 'A':case 'H':case 'I':case 'M':
case 'T':case 'U':case 'V':case 'X':
case 'O':case 'Y':case '1':case '8':
case 'W':
continue;break;
default:return 0;
}
}
for(i=0;str[i];i++)
if(str[i]^mstr[l-i-1])
return 0;
return 1;
}
//function to check palindrome
int isPal(char str[])
{
int i,l=strlen(str),n;
n=l>>1;
for(i=0;i<=n;i++)
if(str[i]^str[l-i-1])
return 0;
return 1;
}
No comments:
Post a Comment
Note: Only a member of this blog may post a comment.