コード例 #1
0
ファイル: StrategyTest.cs プロジェクト: pmlocke/Sudoku-Solver
        public void GetMatchingTilesTest()
        {
            Tile tile123 = new Tile(0, 0);
            tile123.SetPossibleAnswers(new List<int>() { 1, 2 });

            Tile tileMatch123 = new Tile(1, 0);
            tileMatch123.SetPossibleAnswers(new List<int>() { 1, 2 });

            Tile tile456 = new Tile(3, 0);
            tile456.SetPossibleAnswers(new List<int>() { 4, 5 });

            Tile tileMatch456 = new Tile(4, 0);
            tileMatch456.SetPossibleAnswers(new List<int>() { 4, 5 });

            Tile tile567 = new Tile(6, 0);
            tile567.SetPossibleAnswers(new List<int>() { 1, 2, 5, 6, 7 });

            List<Tile> allTiles = new List<Tile>() { tile123, tileMatch123, tile456, tileMatch456, tile567 };

            SubgroupReductionStrategy_Accessor accessor = new SubgroupReductionStrategy_Accessor();
            List<Tile> actual = accessor.GetMatchingTiles(allTiles);
            Assert.AreEqual(4, actual.Count);
            accessor.RemoveSubgroup(allTiles, actual);
            Assert.AreEqual(2, tile567.GetPossibleAnswers().Count);
        }
コード例 #2
0
ファイル: TileTest.cs プロジェクト: pmlocke/Sudoku-Solver
 public void Initialize_Tile()
 {
     Tile tile = new Tile(8,8);
     Assert.AreEqual(tile.X, 8);
     Assert.AreEqual(tile.Y, 8);
     Assert.AreEqual(tile.Group, 8);
     Assert.AreEqual(tile.GetPossibleAnswers().Count, 9);
 }
コード例 #3
0
ファイル: StrategyTest.cs プロジェクト: pmlocke/Sudoku-Solver
        public void Get_answered()
        {
            Tile tile = new Tile(8, 8);
            Tile tile2 = new Tile(7, 8, 2);
            Tile tile3 = new Tile(6, 8, 3);

            List<Tile> tileList = new List<Tile>();
            tileList.Add(tile);
            tileList.Add(tile2);
            tileList.Add(tile3);

            Assert.AreEqual(BasicStrategy.GetAnswered(tileList).Count, 2);
        }
コード例 #4
0
ファイル: Tile.cs プロジェクト: pmlocke/Sudoku-Solver
        /// <summary>
        /// Create A Tile with the same properties as an existing tile.
        /// </summary>
        /// <param name="t">Tile</param>
        public Tile(Tile t)
        {
            X = t.X;
            Y = t.Y;
            Group = t.Group;

            if (t.Answer > 0)
            {
                Answer = t.Answer;
            }
            else
            {
                possibleAnswers.AddRange(t.GetPossibleAnswers());
            }
        }
コード例 #5
0
ファイル: Grid.cs プロジェクト: pmlocke/Sudoku-Solver
        /// <summary>
        /// Create The Grid
        /// </summary>
        /// <param name="serializedBoard">81 character numeric string, 0 denotes a blank tile </param>
        public Grid(string serializedBoard)
        {
            if (serializedBoard.Length != 81)
            {

                throw new Exception("The input is not a valid sudoku puzzle");
            }

            this.FetchMethods = new FetchMethod[] { this.getRow, this.getColumn, this.getGroup };
            int gridIndex = 0;
            for (int y = 0; y < 9; y++)
            {
                for (int x = 0; x < 9; x++)
                {
                    int answer = int.Parse(serializedBoard[gridIndex].ToString());
                    Tile tile = new Tile(x, y);
                    tile.Answered += this.TileIsSolved;
                    myTiles.Add(tile);
                    if (answer > 0) { tile.Answer = answer; }
                    gridIndex++;
                }
            }
        }
コード例 #6
0
ファイル: TileTest.cs プロジェクト: pmlocke/Sudoku-Solver
        public void remove_possible_answers()
        {
            Tile tile = new Tile(8, 8);
            Tile tile2 = new Tile(7, 8, 2);
            Tile tile3 = new Tile(6, 8, 3);

            List<Tile> tileList = new List<Tile>();
            tileList.Add(tile2);
            tileList.Add(tile3);

            Assert.AreEqual(9, tile.GetPossibleAnswers().Count);
            tile.RemoveAnswers(tileList);
            Assert.AreEqual(7, tile.GetPossibleAnswers().Count);
        }
コード例 #7
0
ファイル: TileTest.cs プロジェクト: pmlocke/Sudoku-Solver
 public void initialize_tile_with_answer()
 {
     Tile tile = new Tile(8, 8, 1);
     Assert.AreEqual(tile.X, 8);
     Assert.AreEqual(tile.Y, 8);
     Assert.AreEqual(tile.Group, 8);
     Assert.AreEqual(tile.GetPossibleAnswers().Count, 1);
     Assert.AreEqual(tile.Answer, 1);
 }
コード例 #8
0
ファイル: TileTest.cs プロジェクト: pmlocke/Sudoku-Solver
 public void get_tile_possible_answers()
 {
     Tile tile = new Tile(8, 8);
     Assert.AreEqual(9, tile.GetPossibleAnswers().Count);
 }
コード例 #9
0
ファイル: TileTest.cs プロジェクト: pmlocke/Sudoku-Solver
 public void get_tile_answer_negative()
 {
     Tile tile = new Tile(8, 8);
     Assert.AreEqual(0, tile.Answer);
 }
コード例 #10
0
ファイル: TileTest.cs プロジェクト: pmlocke/Sudoku-Solver
 public void get_set_tile_answer()
 {
     Tile tile = new Tile(8, 8);
     tile.Answer = 3;
     Assert.AreEqual(3,tile.Answer);
 }
コード例 #11
0
ファイル: TileTest.cs プロジェクト: pmlocke/Sudoku-Solver
 public void tile_is_solved()
 {
     Tile tile = new Tile(8, 8);
     Assert.AreEqual(false, tile.IsSolved);
     tile.Answer = 1 ;
     Assert.AreEqual(true, tile.IsSolved);
     Assert.AreEqual(1, tile.GetPossibleAnswers().Count);
 }
コード例 #12
0
ファイル: TileTest.cs プロジェクト: pmlocke/Sudoku-Solver
        public void Set_Tile_Group()
        {
            Tile tile = new Tile(3, 0);
            Assert.AreEqual(tile.Group, 1);

            tile = new Tile(7, 0);
            Assert.AreEqual(tile.Group, 2);

            tile = new Tile(0, 3);
            Assert.AreEqual(tile.Group, 3);

            tile = new Tile(3, 3);
            Assert.AreEqual(tile.Group, 4);

            tile = new Tile(7, 3);
            Assert.AreEqual(tile.Group, 5);

            tile = new Tile(0, 6);
            Assert.AreEqual(tile.Group, 6);

            tile = new Tile(3, 6);
            Assert.AreEqual(tile.Group, 7);

            tile = new Tile(6, 6);
            Assert.AreEqual(tile.Group, 8);
        }
コード例 #13
0
ファイル: Grid.cs プロジェクト: pmlocke/Sudoku-Solver
 public Object Clone()
 {
     Grid gridClone = new Grid();
     foreach (Tile t in myTiles)
     {
         Tile tile = new Tile(t);
         tile.Answered += gridClone.TileIsSolved;
         gridClone.myTiles.Add(tile);
     }
     return gridClone;
 }