private int CountMisplaced(List <int?> values) { List <Tile> tiles = values.Select(value => new Tile(value)).ToList(); MisplacedTilesCounter misplacedTilesCounter = new MisplacedTilesCounter(); int totalMisplaced = misplacedTilesCounter.Count(tiles); return(totalMisplaced); }
public virtual Board Build(int size) { if (size < 1) { throw new ArgumentException($"Board size must be bigger then 0, got {size}"); } List <Tile> tiles = GetLegalBoardTiles(size); int blankIndex = blankTileIndexFinder.TryFind(tiles, out int index) ? index: throw new Exception("Illegal number of tiles!"); int numberOfMisplacedTiles = misplacedTilesCounter.Count(tiles); Board board = new Board { Tiles = tiles, BlankIndex = blankIndex, Size = size, TotalMisplacedTiles = numberOfMisplacedTiles, IsSolved = numberOfMisplacedTiles == 0 }; return(board); }