private void solveSure(Sudoku sudoku) { // Fill in all values that are sure
		int numHits;

		do {
			numHits = 0;
			maybe.clear();
			for (int index = 0; index < 9 * 9; index++) { // loop over all slots
				if (sudoku.get(index) != 0) // find empty slots
					continue;
				int row = Util.getRow(index);
				int col = Util.getCol(index);
				int[] block_holder = Util.getBlock(row, col);
				int x = block_holder[0];
				int y = block_holder[1];

				// find numbers missing in this row/col/block
				ArrayList<Integer> missingRow = missingNumbersRow(row);
				ArrayList<Integer> missingCol = missingNumbersCol(col);
				ArrayList<Integer> missingBlock = missingNumbersBlock(x, y);

				ArrayList<Integer> hits = new ArrayList<Integer>(); // numbers
																	// that are
																	// missing
																	// in all
																	// three
				for (Integer i : missingRow) {
					if (missingCol.contains(i) && missingBlock.contains(i)) {
						hits.add(i);
					}
				}
				if (hits.size() == 1) {
					sudoku.set(index, hits.get(0));
					numHits++;
				} else if (hits.size() > 1) {
					maybe.put(index, hits);
				}
			}
		} while (numHits != 0);
	}