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