示例#1
0
        private void RememberPossibleValue(CellValue value)
        {
            if (!CellValue.RealValue(value))
            {
                return;
            }

            _memory[value] = Tristate.Yes;
        }
示例#2
0
        private bool IsImpossible(CellValue value)
        {
            if (!CellValue.RealValue(value))
            {
                return(false);
            }

            return(CanBe(value) == Tristate.No);
        }
示例#3
0
        public void RememberValueCanNotBe(CellValue value)
        {
            if (!CellValue.RealValue(value))
            {
                return;
            }
            if (Value != CellValue.Unknown)
            {
                return;
            }

            _memory[value] = Tristate.No;

            if (CountPossibleValues == 1)
            {
                Value = FirstPossibleValue;
            }
        }
示例#4
0
        public void RememberValueCanBe(CellValue value)
        {
            //Validate)
            if (!CellValue.RealValue(value))
            {
                return;
            }
            if (IsImpossible(value))
            {
                Process(); return;
            }

            //Do it !!
            RememberPossibleValue(value);
            if (!CellValue.RealValue(Value) && CountPossibleValues == 1)
            {
                Value = FirstPossibleValue;
            }
        }