public IPredefinedSudokuBox GetPredefinedSudokuBox(
     SudokuBoxCoordinate coordinate,
     SudokuBoxCoordinate?parentCoordinate,
     SudokuBoxNumbers number)
 {
     return(new PredefinedSudokuBox(coordinate, parentCoordinate, number));
 }
 public PredefinedSudokuBox(
     SudokuBoxCoordinate coordinate,
     SudokuBoxCoordinate?parentCoordinate,
     SudokuBoxNumbers number)
     : base(coordinate, parentCoordinate, SudokuBoxState.Predefined)
 {
     Number = number;
 }
示例#3
0
        public INoteSudokuBox WithOrWithoutNumber(SudokuBoxNumbers number)
        {
            var numbers = new List <SudokuBoxNumbers>(Numbers);

            if (numbers.All(n => n != number))
            {
                numbers.Add(number);
            }
            else
            {
                numbers.Remove(number);
            }

            // ReSharper disable once PossibleInvalidOperationException
            return(new NoteSudokuBox(Coordinate, ParentCoordinate, numbers));
        }
        public static SudokuBoxCoordinate?GetCoordinate(int index, SudokuBoxNumbers xWidth)
        {
            var x = index / (int)xWidth + 1;

            if (!Enum.IsDefined(typeof(SudokuBoxNumbers), x))
            {
                return(null);
            }

            var y = index % (int)xWidth + 1;

            if (!Enum.IsDefined(typeof(SudokuBoxNumbers), y))
            {
                return(null);
            }

            return(new SudokuBoxCoordinate((SudokuBoxNumbers)x, (SudokuBoxNumbers)y));
        }
示例#5
0
 public UserFilledSudokuBox WithNumber(SudokuBoxNumbers newNumber)
 {
     // ReSharper disable once PossibleInvalidOperationException
     return(newNumber == Number ? this : new UserFilledSudokuBox(Coordinate, ParentCoordinate, newNumber));
 }
 public IPredefinedSudokuBox WithNumber(SudokuBoxNumbers newNumber)
 {
     return(newNumber == Number ? this : new PredefinedSudokuBox(Coordinate, ParentCoordinate, newNumber));
 }
 public SudokuBoxCoordinate(SudokuBoxNumbers x, SudokuBoxNumbers y)
 {
     X = x;
     Y = y;
 }
 public static int GetIndex(SudokuBoxCoordinate coordinate, SudokuBoxNumbers xWidth)
 {
     return(((int)coordinate.X - 1) * (int)xWidth + (int)coordinate.Y - 1);
 }