class GridSquare { private int GridRow; private int GridCol; private int SquareValue = 0; private int[] SquareCandidates = new int[10] { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 }; private int GridMiniSquare; public GridSquare(int r, int c) { GridRow = r; GridCol = c; GridMiniSquare = (int)((c-1) / 3) + (3 * (int)((r-1)/3)); } public int MiniSquare { get { return GridMiniSquare; } } public int Value { get { return SquareValue; } set { SquareValue = value; } } public int Row { get { return GridRow; } set { GridRow = value; } } public int Col { get { return GridCol; } set { GridCol = value; } } public int this[int i] { get { return SquareCandidates[i]; } set { SquareCandidates[i] = value; } } public int NumCandidates() { int sumCands = 0; for (int i = 1; i <= 9; i++) { sumCands += SquareCandidates[i]; } sumCands = 9 - sumCands; return sumCands; } public string DisplayCandidates() { string cands = ""; for (int i = 1; i <= 9; i++) { if (SquareCandidates[i] == 0) { cands += i + " "; } else { cands += " "; } } return cands; } }