Поиск по объекта координатам

Всем привет. Помогите, пожалуйста решить задачу. Дано прямоугольное поле. По периметру поля расположены кнопки (квадраты одинаковой известной величины.) В центре поля по горизонтали разрыв (пустая зона). Кнопки проиндексированы от 1 до x начиная с левого верхнего угла. Нужно описать алгоритм (формулой), который получает координаты точки, и на выходе возвращает индекс кнопки, которой принадлежит точка, либо не возвращает ничего если точка находится в пустой зоне. Желательно не использовать массив, и вообще не хранить нигде координаты кнопок, а решить именно формулой. Откуда считать координаты не важно.

Пример поля: введите сюда описание изображения

Желательно меньше кода и больше формул. Никак не могу решить. Помогите, пожалуйста


Ответы (1 шт):

Автор решения: Stanislav Volodarskiy

Не знаю как тут формулой обойтись. Нумерация кнопок не регулярная:

import math

w = 1200
h = 700

cell_w = w / 12
cell_h = h / 7

x, y = map(int, input().split())

cx = math.floor(x / cell_w)
cy = math.floor(y / cell_h)

map_ = {k: i for i, k in enumerate((
    (0, 0), (1, 0), (2, 0), (3, 0), (8, 0), (9, 0), (10, 0), (11, 0),
    (11, 1), (11, 2), (11, 3), (11, 4), (11, 5), (11, 6),
    (10, 6), (9, 6), (8, 6), (3, 6),  (2, 6), (1, 6), (0, 6),
    (1, 5), (1, 4), (1, 3), (1, 2), (1, 1)
), start=1)}

print(map_.get((cx, cy)))
→ Ссылка