Coord

Description

A Coord is a tuple with x, y coordinates. It represents the top-left origin of a cell in a grid.

>>> from benker.coord import Coord

>>> coord = Coord(4, 5)

We use the Excel convention to represent a Coord: columns are represented by letters, rows are represented by numbers.

>>> print(Coord(2, 5))
B5

Operations

Mathematical operations are an easy way to translate a Coord to another locations.

You can use a Size to move a coord to another position. You can also use a tuple (x, y) or a single quantity (integer):

>>> from benker.size import Size

>>> Coord(2, 5) + Size(1, 2)
Coord(x=3, y=7)

>>> Coord(2, 5) + (1, 2)
Coord(x=3, y=7)

>>> Coord(2, 5) + 1
Coord(x=3, y=6)

The translation can be positive or negative:

>>> Coord(2, 5) - Size(1, 2)
Coord(x=1, y=3)

>>> Coord(2, 5) - (1, 2)
Coord(x=1, y=3)

>>> Coord(2, 5) - 1
Coord(x=1, y=4)

You cannot add or subtract two coordinates:

>>> Coord(2, 5) + Coord(2, 1)
Traceback (most recent call last):
    ...
TypeError: <class 'benker.coord.Coord'>

>>> Coord(2, 5) - Coord(1, 2)
Traceback (most recent call last):
    ...
TypeError: <class 'benker.coord.Coord'>

Again, you cannot add a size and a coord:

>>> Size(2, 5) + Coord(2, 1)
Traceback (most recent call last):
    ...
TypeError: <class 'benker.coord.Coord'>

>>> Size(2, 5) - Coord(1, 2)
Traceback (most recent call last):
    ...
TypeError: <class 'benker.coord.Coord'>

Warning

This constraint must be respected in order to help diagnosing conceptual errors.