import java.util.ArrayList; import java.util.List; public class showGrid { private List<String[]> gridList = new ArrayList<String[]>(); public void run() { gridList.add(new String[] {"H", " ", " ", "P"}); gridList.add(new String[] {"?", "G", "N", "?"}); gridList.add(new String[] {"L", "A", "?", "S"}); gridList.add(new String[] {"S", "?", "A", "S"}); gridList.add(new String[] {" ", "L", " ", "I"}); gridList.add(new String[] {" ", "E", "T", "O"}); gridList.add(new String[] {" ", "R", "I", "N"}); gridList.add(new String[] {" ", "I", "K", " "}); for (int i = 0; i < 1; ++i) { if (!needChecking()) break; System.out.println("Starting round " + (i + 1)); checkGrid(); } } private void checkGrid() { for (int i = 0; i < gridList.size(); ++i) { for (int z = 0; z < gridList.get(i).length; ++z) { //Look for question marks. if (gridList.get(i)[z].equals("?")) { String x = searchX(i, z); String y = searchY(i, z); System.out.println(x); System.out.println(y); List<String> wordsX = getUrlResults.getSearchResults(x); List<String> wordsY = getUrlResults.getSearchResults(y); int indexX = x.indexOf("?"); int indexY = y.indexOf("?"); if (wordsX.size() == 1) { gridList.get(i)[z] = wordsX.get(0).charAt(indexX) + ""; continue; } if (wordsY.size() == 1) { gridList.get(i)[z] = wordsY.get(0).charAt(indexY) + ""; continue; } List<String> charX = new ArrayList<String>(); List<String> charY = new ArrayList<String>(); for (String word : wordsX) { charX.add(word.charAt(indexX) + ""); } for (String word : wordsY) { charY.add(word.charAt(indexY) + ""); } List<String> common = new ArrayList<String>(); for (int x3 = 0; x3 < charX.size(); ++x3) { for (int y3 = 0; y3 < charY.size(); ++y3) { if (charX.get(x3).equals(charY.get(y3))) { boolean exists = false; for (int c = 0; c < common.size(); ++c) { if (common.get(c).equals(charX.get(x3))) { exists = true; break; } } if (!exists) { common.add(charX.get(x3)); } } } } if (common.size() == 1) { gridList.get(i)[z] = common.get(0); } } } } for (int i = 0; i < gridList.size(); ++i) { for (int z = 0; z < gridList.get(i).length; ++z) { System.out.print(gridList.get(i)[z]); } System.out.println(); } } private String searchX(int i, int z) { for (int x = z; x >= 0; --x) { if (x <= 0 || gridList.get(i)[x - 1].equals(" ")) { String word = ""; for (int x2 = x; x2 < gridList.get(i).length; ++x2) { if (gridList.get(i)[x2].equals(" ")) { break; } word += gridList.get(i)[x2]; } return word; } } return ""; } private String searchY(int i, int z) { for (int y = i; y >= 0; --y) { if (y <= 0 || gridList.get(y - 1)[z].equals(" ")) { String word = ""; for (int y2 = y; y2 < gridList.size(); ++y2) { if (gridList.get(y2)[z].equals(" ")) { break; } word += gridList.get(y2)[z]; } return word; } } return ""; } private boolean needChecking() { for (int i = 0; i < gridList.size(); ++i) { for (int z = 0; z < gridList.get(i).length; ++z) { if (gridList.get(i)[z].equals("?")) return true; } } return false; } }