// D. Reicer
// Contest #2 -
SR3
// Paul VI High
School (3094)
import
java.util.PriorityQueue;
public class Data
{
public void operate (String input, int
counter)
{
int pos = 0;
String operation = "";
String string1 = "";
String string2 = "";
int num = 0;
while ((int) input.charAt(pos) >
64 && (int) input.charAt(pos) < 91)
{
operation +=
input.charAt(pos);
pos++;
}
if
(operation.equals("ADD") || operation.equals("SUBTRACT"))
{
if(input.charAt(pos) == '0')
{
num = 0;
}
else if(input.charAt(pos) ==
'1')
{
num = 1;
}
else if(input.charAt(pos) ==
'2')
{
num = 2;
}
else if(input.charAt(pos) ==
'3')
{
num = 3;
}
else if(input.charAt(pos) ==
'4')
{
num = 4;
}
pos += 3;
}
else
{
pos += 2;
}
while ((int) input.charAt(pos) >
64 && (int) input.charAt(pos) < 91)
{
string1 += input.charAt(pos);
pos++;
if (pos >= input.length())
{
break;
}
}
if(operation.equals("UNION")
|| operation.equals("INTERSECT"))
{
pos += 2;
while ((int) input.charAt(pos)
> 64 && (int) input.charAt(pos) < 91)
{
string2 +=
input.charAt(pos);
pos++;
if (pos >= input.length())
{
break;
}
}
}
if(operation.equals("ADD"))
{
System.out.println(counter +
". " + add(string1, num));
}
else
if(operation.equals("SUBTRACT"))
{
System.out.println(counter +
". " + subtract(string1, num));
}
else
if(operation.equals("DIVIDE"))
{
System.out.println(counter +
". " + divide(string1));
}
else
if(operation.equals("UNION"))
{
System.out.println(counter +
". " + union(string1, string2));
}
else if(operation.equals("INTERSECT"))
{
System.out.println(counter +
". " + intersect(string1, string2));
}
}
public static String divide(String input)
{
String string1 = "";
String string2 ="";
for (int x = 0; x < 8; x++)
{
if(x < 4)
{
string1
+= input.charAt(x);
}
else
{
string2 +=
input.charAt(x);
}
}
string1 = alphabetize(string1);
string2 = alphabetize(string2);
for (int x = 0; x < 4; x++)
{
string1 += string1.charAt(x);
string2 += string2.charAt(x);
}
return (string1 + " and "
+ string2);
}
public static String add (String input,
int num)
{
String output = "";
String addition = "";
int counter = 0;
while (counter < num)
{
addition += input.charAt(counter);
counter++;
}
output += addition;
addition = alphabetize(addition);
output += addition;
while (output.length() < 8)
{
output +=
input.charAt(counter);
counter++;
}
return output;
}
public static String subtract (String
input, int num)
{
String output = "";
for(int x = 0; x < 8; x++)
{
if(x > num - 1)
{
output +=
input.charAt(x);
}
}
int counter = output.length() - 1;
String extra = "";
while(8 > (output.length() +
extra.length()))
{
extra +=
output.charAt(counter);
counter--;
}
extra = alphabetize(extra);
output += extra;
return output;
}
public static String union (String input1,
String input2)
{
String output = "";
String half1 = "";
String half2 = "";
for (int x = 0; x < 8; x++)
{
if(x < 4)
{
half2 +=
input2.charAt(x);
}
else
{
half1 +=
input1.charAt(x);
}
}
half1 = alphabetize(half1);
half2 = alphabetize(half2);
output = half1 + half2;
return output;
}
public static String intersect (String
input1, String input2)
{
String output = "";
String half1 = "";
String half2 = "";
for (int x = 0; x < 8; x++)
{
if (x < 2 || x > 5)
{
half1 +=
input1.charAt(x);
half2 +=
input2.charAt(x);
}
}
half1 = alphabetize(half1);
half2 = alphabetize(half2);
output = half1 + half2;
return output;
}
public static String alphabetize (String
input)
{
String output = "";
PriorityQueue <Character>
alphabetical = new PriorityQueue <Character>();
for (int x = 0; x <
input.length(); x++)
{
alphabetical.add(input.charAt(x));
}
while(!alphabetical.isEmpty())
{
output += alphabetical.remove();
}
return output;
}
}