Pretty much just an implementation problem.
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.util.StringTokenizer;
/**
*
* @author Sanchit M. Bhatnagar
* @see http://uhunt.felix-halim.net/id/74004
*
*/
public class P10205 {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
PrintWriter out = new PrintWriter(System.out);
String line = null;
StringTokenizer st = null;
int cases = Integer.parseInt(br.readLine());
br.readLine(); // Read blank line.
for (int zz = 0; zz < cases; zz++) {
if (zz != 0)
out.println();
int shuffles = Integer.parseInt(br.readLine());
int[][] caesar = new int[shuffles][52];
for (int i = 0; i < shuffles; i++) {
int count = 0;
while (count < 52) {
st = new StringTokenizer(br.readLine());
while (st.hasMoreTokens()) {
caesar[i][count] = Integer.parseInt(st.nextToken()) - 1;
count++;
}
}
}
Card[] newDeck = new Card[52];
init(newDeck);
while ((line = br.readLine()) != null) {
if (line.trim().equals(""))
break;
int move = Integer.parseInt(line) - 1;
Card[] tmp = new Card[52];
for (int i = 0; i < 52; i++) {
tmp[i] = newDeck[caesar[move][i]];
}
newDeck = tmp;
}
for (int i = 0; i < 52; i++) {
out.println(newDeck[i]);
}
}
out.close();
br.close();
}
private static void init(Card[] newDeck) {
String[] suitOrder = new String[] { "Clubs", "Diamonds", "Hearts", "Spades" };
String[] order = { "2", "3", "4", "5", "6", "7", "8", "9", "10", "Jack", "Queen", "King", "Ace" };
for (int j = 0; j < 4; j++) {
for (int i = 0; i < 13; i++) {
newDeck[i + 13 * j] = new Card(order[i], suitOrder[j]);
}
}
}
@SuppressWarnings("unused")
private static class Card {
String card;
String card2;
String num;
String suit;
public Card(String num, String suit) {
card2 = num + " of " + suit;
this.num = num;
this.suit = suit;
if (this.num == "10") {
card = "T" + suit.charAt(0);
} else {
card = num.charAt(0) + "" + suit.charAt(0);
}
}
public String toString() {
return this.card2;
}
}
}