public List<int> ReturnPossibleValues(Column col, Row row, Quadrant quad)
        {
            List<int> possibleValues = new List<int>();

            for(int i = 1; i <= 9; i++)
            {
                if(
                    !col.ContainsValue(i) &&
                    !row.ContainsValue(i) &&
                    !quad.ContainsValue(i))
                        possibleValues.Add(i);

            }

            return possibleValues;
        }
        public int[] SolveSquare(Square sq, Column col, Row row, Quadrant quad)
        {
            //This array is returned with the info as to whether the square was solved.
            //It's values are:
            //solveInfo[0] = -1 / 1 : indicates if the square was solved
            //solveInfo[1] = int : indicates the solved value. 0 if it couldn't be solved.
            int[] solveInfo = new int[2]{-1,0};

            foreach(int number in sq.PossibleValues)
            {
                //Is this a possible value elsewhere in the quad? If not, then it's the correct value
                if(!NumberIsPossibleElsewhereInQuad(number, quad))
                {
                    solveInfo[0] = 1;
                    solveInfo[1] = number;
                    return solveInfo;
                }

                if(!NumberIsPossibleElsewhereInRow(number, row))
                {
                    solveInfo[0] = 1;
                    solveInfo[1] = number;
                    return solveInfo;
                }

                if(!NumberIsPossibleElsewhereInCol(number, col))
                {
                    solveInfo[0] = 1;
                    solveInfo[1] = number;
                    return solveInfo;
                }

                if(HasOnlyOnePossibleValue(sq)) {
                    solveInfo[0] = 1;
                    solveInfo[1] = number;
                    return solveInfo;
                }

            }

            return solveInfo;
        }
        private bool NumberIsPossibleElsewhereInRow(int number, Row row)
        {
            bool existsElsewhere = false;
            int numCount = 0;

            foreach(Square sq in row.listOfSquares)
            {
                if(sq.PossibleValues.Contains(number))
                    numCount++;
            }

            if(numCount > 1)
                existsElsewhere = true;

            return existsElsewhere;
        }