package com.tutego.insel.solutions.lang;

public class Caesar
{
  static char key = 3;

  public static String caesar( String s )
  {
    StringBuffer result = new StringBuffer();

    for( int i = 0; i < s.length(); i++ )
    {
      char c = s.charAt( i );

      if ( Character.isUpperCase( c ) )
        result.append( (char)('A' + (c -'A' + key) % 26) );
      else if ( Character.isLowerCase( c ) )
        result.append( (char)('a' + (c -'a' + key) % 26) );
      else
        result.append( c );
    }

    return result.toString();
  }

  public static String decaesar( String s )
  {
    StringBuffer result = new StringBuffer();

    for( int i = 0; i < s.length(); i++ )
    {
      char c = s.charAt( i );

      if ( Character.isUpperCase( c ) )
        result.append( (char) ('A' + (c - 'A' + (26-key)) % 26) );
      else if ( Character.isLowerCase( c ) )
        result.append( (char)('a' + (c -'a' + (26-key)) % 26) );
      else
        result.append( c );
    }

    return result.toString();
  }

  public static void main( String args[] )
  {
    String s = "abxyz ABXYZ";

    System.out.println( caesar( s ) );
    System.out.println( decaesar( caesar( s ) ) );
  }
}
