Esempio n. 1
0
 internal Square(Coordinate c, int numPossibleValues)
 {
     Coordinate        = c;
     NumPossibleValues = numPossibleValues;
     _possibleValues   = new PossibleValue[numPossibleValues];
     for (int i = 0; i < NumPossibleValues; i++)
     {
         _possibleValues[i] = new PossibleValue(this, i);
     }
     _valuesDroppedOnSelect = new Stack <PossibleValue>(NumPossibleValues);
 }
Esempio n. 2
0
 private Square(Square other)
 {
     Coordinate        = other.Coordinate;
     NumPossibleValues = other.NumPossibleValues;
     _possibleValues   = new PossibleValue[other._possibleValues.Length];
     for (int i = 0; i < _possibleValues.Length; i++)
     {
         PossibleValue?otherPossibleValue = other._possibleValues[i];
         if (otherPossibleValue is null || otherPossibleValue.State != PossibleSquareState.UNKNOWN)
         {
             continue;
         }
         _possibleValues[i] = new PossibleValue(this, i);
     }
     _valuesDroppedOnSelect = new Stack <PossibleValue>(NumPossibleValues);
 }
Esempio n. 3
0
        internal PossibleValue[] GetStillPossibleValues()
        {
            Debug.Assert(
                _selectedValueIndex is null,
                $"Can't retrieve possible values from Square at {Coordinate} when the index {_selectedValueIndex} is already selected.");
            var possibleValues = new PossibleValue[NumPossibleValues];
            int i = 0;

            foreach (PossibleValue?possibleValue in _possibleValues)
            {
                if (possibleValue != null && possibleValue.State == PossibleSquareState.UNKNOWN)
                {
                    possibleValues[i] = possibleValue;
                    if (++i == NumPossibleValues)
                    {
                        return(possibleValues);
                    }
                }
            }
            throw new ApplicationException($"Expected to find {NumPossibleValues} possible values but only found {i}.");
        }