import abc


class RuleLearner:
    """2D 2-person board game rule learner base class

    TODO
    """

    def __init__(self, board_height, board_width):
        """Initialize the rule learner

        Subclasses should call this constructor.

        :type board_height: positive integer
        :param board_height: the height (number of rows) of the board

        :type board_width: positive integer
        :param board_width: the width (number of columns) of the board

        """

        self._board_height = board_height
        self._board_width = board_width

    @abc.abstractmethod
    def 
(self, board):
        """Get the valid moves for the board.

        :type board: Boards.Board
        :param board: the board for which to determine the valid moves

        :returns: a 2D Numpy array with the same dimensions as the board contains, the cells where moves are valid set
                  to 1, the rest set to 0
        """
        pass
get_valid_moves