@classmethod
def parse_shot_notation(cls, notation: str) ->(int, int):
    """
        Parse a single location on the board in traditional Battleships
        notation (A1-J10), and return a (x, y)-tuple of indexes on the Board.

        :param str notation: the notations to parse.

        :raises ValueError: if the passed notation is invalid.
        """
    match = cls.shot_regex.match(notation)
    if not match:
        raise ValueError('Invalid notation!')
    x = ord(match.group('x').upper()) - ord('A')
    y = int(match.group('y')) - 1
    return x, y
