Sunday, June 10, 2012

UVA Solution for 401

#include<stdio.h>
#include<string.h>

int a,b,c,len,i,j;

int palindrome(char line [])
{
int k=1;
len=strlen(line);
for(i=0,j=len-1;i<len,j>=0;i++,j--)
{
if (line[i]==line[j] )
continue;
else
{
    k=0;
    break;
}
}
if(k==1)
return 1;
else
return 0;
}

int mirpalin(char line[])
{
int k=0;
len=strlen(line);  
for(i=0;i<len;i++)
  {
  if(line[i]=='A'||line[i]=='H'||line[i]=='I'||line[i]=='L'||
  line[i]=='M'||line[i]=='O'||line[i]=='T'||line[i]=='U'||
  line[i]=='V'||line[i]=='W'||line[i]=='X'||
  line[i]=='Y'|| 
  line[i]=='1'||line[i]=='8'||line[i]=='0')
  k++;
  }  
 if(k==len)
 return 1;
 else
 return 0;      
}


int mirrorstring(char line[])
{
int k,a=1;
len=strlen(line);
for(i=0;i<len;i++)
{
if(line[i]=='E')
line[i]='3';
else if(line[i]=='J')
line[i]='L';
else if(line[i]=='0')
line[i]='O';
else if(line[i]=='S')
line[i]='2';
else if(line[i]=='Z')
line[i]='5';
else
continue;
}
a=palindrome(line);
if(a==1)
return 1;
else
return 0;
}


int main()
{
   
    char line[22];
    int pd,ms,mp;
    while(gets(line))
    {
    len=strlen(line);
    for(i=0;i<len;i++)
    printf("%c",line[i]);
    pd=palindrome(line);
    if(pd==1)
      {
             mp=mirpalin(line);
             if(mp==1)
             printf(" -- is a mirrored palindrome.\n\n");
             else
             printf(" -- is a regular palindrome.\n\n");
      }
    else
      {
      ms=mirrorstring(line);
      if(ms==1)
      printf(" -- is a mirrored string.\n\n");
      else
      printf(" -- is not a palindrome.\n\n");
      }
    }
}