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);
        }
Beispiel #2
0
        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);
        }