Beispiel #1
0
        public List <Chessboard> GetNeighbourhoodOf(Queen queen)
        {
            var neighbourhood = new List <Chessboard>();

            neighbourhood.AddRange(queen
                                   .Position
                                   .GetAdjacentFields(BoardSize)
                                   .Where(coords => !HasQueenOn(coords))
                                   .Select(coords =>
            {
                var newQueensList = Queens.Where(q => q != queen).ToList();
                newQueensList.Add(new Queen(coords.X, coords.Y));
                return(new Chessboard(newQueensList));
            }));

            return(neighbourhood);
        }