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); }
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); }
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); }
/// <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()); } }
/// <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++; } } }
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); }
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); }
public void get_tile_possible_answers() { Tile tile = new Tile(8, 8); Assert.AreEqual(9, tile.GetPossibleAnswers().Count); }
public void get_tile_answer_negative() { Tile tile = new Tile(8, 8); Assert.AreEqual(0, tile.Answer); }
public void get_set_tile_answer() { Tile tile = new Tile(8, 8); tile.Answer = 3; Assert.AreEqual(3,tile.Answer); }
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); }
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); }
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; }