APCS Free Response 2002 AB2 Java Version Answers
Compete.java source code.
import java.util.*;
public class Compete
{
private Queue myDiscards;
/**
* Construct with empty discard pile
*/
public Compete()
{
myDiscards = new ListQueue();
}
/**
* precondition: myDiscards is empty
* Simulate one round of Compete.
*/
public void oneRound(Queue pile1, Queue pile2)
{
while (true) {
if (pile1.isEmpty() && pile2.isEmpty()) {
break;
}
else if (pile1.isEmpty()) {
appendQueue(pile2, myDiscards);
break;
}
else if (pile2.isEmpty()) {
appendQueue(pile1, myDiscards);
break;
}
Card c1 = (Card) pile1.dequeue();
Card c2 = (Card) pile2.dequeue();
if (c1.compareTo(c2) == 0) {
myDiscards.enqueue(c1);
myDiscards.enqueue(c2);
}
else if (c1.compareTo(c2) < 0) {
appendQueue(pile2,myDiscards);
pile2.enqueue(c1);
pile2.enqueue(c2);
break;
}
else {
appendQueue(pile1, myDiscards);
pile1.enqueue(c1);
pile2.enqueue(c2);
break;
}
}
}
/**
* Remove all objects from source and put them
* in destination in the order in which they're removed.
*/
private void appendQueue(Queue destination, Queue source)
{
while (! source.isEmpty()) {
destination.enqueue(source.dequeue());
}
}
}
Owen L. Astrachan
Last modified: Thu Jul 11 13:52:59 EDT 2002