`
type Position = (Int, Int)
trait Piece {
def possibleMoves(position: Position): Set[Position]
def possibleAttacks(position: Position, rBoard: RBoard): Set[Position] = possibleMoves(position)
}
type Board = Map[Piece, Position]
type RBoard = Map[Position, Piece]
def reversedBoard(board: Board): RBoard = ???
def possibleMoves(pieceLocation: Position, board: Board): Set[Position] = {
val rBoard = reversedBoard(board)
val piece = rBoard(pieceLocation)
val moves = piece.possibleMoves(pieceLocation).filterNot(rBoard.keySet())
val attacks = piece.possibleAttacks(pieceLocation, rBoard)
attacks ++ moves
}`