Exemplo n.º 1
0
        public void SudokuPuzzle_CanCloneItself()
        {
            var puzzle = new SudokuPuzzle();
            puzzle.SetValue(1, 4, SudokuValue.NINE);
            puzzle.SetValue(2, 3, SudokuValue.FIVE);

            var clone = puzzle.Clone() as SudokuPuzzle;
            puzzle.ClearBoard();

            Assert.AreEqual(SudokuValue.NINE, clone.GetValue(1, 4));
            Assert.AreEqual(SudokuValue.FIVE, clone.GetValue(2, 3));
        }
Exemplo n.º 2
0
        public static SudokuPuzzle MakeSolvedPuzzle()
        {
            // known solution from: http://www.sudokukingdom.com/images/rules_solved.jpg
            var rows = new SudokuValue[][] {
                new SudokuValue [] { SudokuValue.TWO, SudokuValue.FOUR, SudokuValue.EIGHT, SudokuValue.THREE, SudokuValue.NINE, SudokuValue.FIVE, SudokuValue.SEVEN, SudokuValue.ONE, SudokuValue.SIX },
                new SudokuValue [] { SudokuValue.FIVE, SudokuValue.SEVEN, SudokuValue.ONE, SudokuValue.SIX, SudokuValue.TWO, SudokuValue.EIGHT, SudokuValue.THREE, SudokuValue.FOUR, SudokuValue.NINE },
                new SudokuValue [] { SudokuValue.NINE, SudokuValue.THREE, SudokuValue.SIX, SudokuValue.SEVEN, SudokuValue.FOUR, SudokuValue.ONE, SudokuValue.FIVE, SudokuValue.EIGHT, SudokuValue.TWO },

                new SudokuValue [] { SudokuValue.SIX, SudokuValue.EIGHT, SudokuValue.TWO, SudokuValue.FIVE, SudokuValue.THREE, SudokuValue.NINE, SudokuValue.ONE, SudokuValue.SEVEN, SudokuValue.FOUR },
                new SudokuValue [] { SudokuValue.THREE, SudokuValue.FIVE, SudokuValue.NINE, SudokuValue.ONE, SudokuValue.SEVEN, SudokuValue.FOUR, SudokuValue.SIX, SudokuValue.TWO, SudokuValue.EIGHT },
                new SudokuValue [] { SudokuValue.SEVEN, SudokuValue.ONE, SudokuValue.FOUR, SudokuValue.EIGHT, SudokuValue.SIX, SudokuValue.TWO, SudokuValue.NINE, SudokuValue.FIVE, SudokuValue.THREE },

                new SudokuValue [] { SudokuValue.EIGHT, SudokuValue.SIX, SudokuValue.THREE, SudokuValue.FOUR, SudokuValue.ONE, SudokuValue.SEVEN, SudokuValue.TWO, SudokuValue.NINE, SudokuValue.FIVE },
                new SudokuValue [] { SudokuValue.ONE, SudokuValue.NINE, SudokuValue.FIVE, SudokuValue.TWO, SudokuValue.EIGHT, SudokuValue.SIX, SudokuValue.FOUR, SudokuValue.THREE, SudokuValue.SEVEN },
                new SudokuValue [] { SudokuValue.FOUR, SudokuValue.TWO, SudokuValue.SEVEN, SudokuValue.NINE, SudokuValue.FIVE, SudokuValue.THREE, SudokuValue.EIGHT, SudokuValue.SIX, SudokuValue.ONE }
            };

            var puzzle = new SudokuPuzzle();
            for (int i = 0; i < rows.Length; i++)
            {
                for (int j = 0; j < rows.Length; j++)
                {
                    puzzle.SetValue(i, j, rows[i][j]);
                }
            }

            return puzzle;
        }
Exemplo n.º 3
0
        public void SudokuPuzzle_CanSetValueForCell()
        {
            var puzzle = new SudokuPuzzle();
            puzzle.SetValue(0, 3, SudokuValue.NINE);

            Assert.AreEqual(SudokuValue.NINE, puzzle.GetValue(0, 3));
        }
Exemplo n.º 4
0
        public void SudokuPuzzle_CanClearBoard()
        {
            var puzzle = new SudokuPuzzle();
            puzzle.SetValue(0, 3, SudokuValue.NINE);
            puzzle.SetValue(0, 4, SudokuValue.EIGHT);

            puzzle.ClearBoard();

            for (int i = 0; i < puzzle.CurrentBoard.Length; i++)
            {
                // board is a square...
                for (int j = 0; j < puzzle.CurrentBoard.Length; j++)
                {
                    Assert.AreEqual(SudokuValue.UNASSIGNED, puzzle.CurrentBoard[i][j]);
                }
            }
        }
Exemplo n.º 5
0
        public void SudokuSolver_ClonesArgumentToAvoidModifyingOriginal()
        {
            var puzzle = new SudokuPuzzle();
            puzzle.SetValue(1, 4, SudokuValue.NINE);

            var solver = new SudokuSolver.SudokuSolver(puzzle);
            puzzle.ClearBoard();

            Assert.AreEqual(SudokuValue.NINE, solver.Puzzle.GetValue(1, 4));
        }
Exemplo n.º 6
0
        public object Clone()
        {
            var puzzle = new SudokuPuzzle();

            for (int i = 0; i < NUM_ROWS; i++)
            {
                for (int j = 0; j < NUM_ROWS; j++)
                {
                    puzzle.SetValue(i, j, this.GetValue(i, j));
                }
            }

            return puzzle;
        }
Exemplo n.º 7
0
        public static SudokuPuzzle MakeSolvablePuzzle()
        {
            var puzzle = new SudokuPuzzle();

            // set some values
            puzzle.SetValue(0, 0, SudokuValue.EIGHT);
            puzzle.SetValue(0, 2, SudokuValue.FOUR);
            puzzle.SetValue(0, 7, SudokuValue.FIVE);
            puzzle.SetValue(1, 3, SudokuValue.FOUR);
            puzzle.SetValue(1, 6, SudokuValue.SEVEN);
            puzzle.SetValue(1, 8, SudokuValue.SIX);

            puzzle.SetValue(2, 1, SudokuValue.SEVEN);
            puzzle.SetValue(2, 3, SudokuValue.TWO);
            puzzle.SetValue(2, 4, SudokuValue.FIVE);
            puzzle.SetValue(2, 5, SudokuValue.NINE);

            puzzle.SetValue(8, 1, SudokuValue.FOUR);
            puzzle.SetValue(8, 5, SudokuValue.FIVE);
            puzzle.SetValue(8, 8, SudokuValue.SEVEN);

            return puzzle;
        }
Exemplo n.º 8
0
        private SudokuPuzzle LoadPuzzleState()
        {
            var puzzle = new SudokuPuzzle();

            for (int i = 0; i < this.Cells.Length; i++)
            {
                if (!string.IsNullOrEmpty(this.Cells[i].Text))
                {
                    // mark cell as supplied
                    var row = i / puzzle.CurrentBoard.Length;
                    var col = i % puzzle.CurrentBoard.Length;
                    var value = (SudokuValue)Enum.ToObject(typeof(SudokuValue), int.Parse(this.Cells[i].Text));

                    puzzle.SetValue(row, col, value);
                }
            }

            return puzzle;
        }
Exemplo n.º 9
0
 public void SudokuPuzzle_SettingValueOutOfBoundsThrowsException()
 {
     var puzzle = new SudokuPuzzle();
     puzzle.SetValue(0, 9, SudokuValue.NINE);
 }
Exemplo n.º 10
0
        public void SudokuPuzzle_ValidatesSameValueInRow()
        {
            var puzzle = new SudokuPuzzle();
            puzzle.SetValue(0, 3, SudokuValue.NINE);

            Assert.IsFalse(puzzle.IsValidValue(SudokuValue.NINE, 0, 1));
        }
Exemplo n.º 11
0
        public void SudokuPuzzle_ValidatesSameValueInBox()
        {
            var puzzle = new SudokuPuzzle();
            puzzle.SetValue(1, 4, SudokuValue.NINE);

            Assert.IsFalse(puzzle.IsValidValue(SudokuValue.NINE, 2, 3));
        }