Sobes.tech
Middle — Senior
29

Как определить вертикальную ось симметрии для списка точек?

Компании, где спрашивали
СБЕРСБЕР

Ответ от нейросети

sobes.tech AI

Чтобы определить вертикальную ось симметрии для набора точек на плоскости, можно воспользоваться следующим подходом:

  1. Найти минимальное и максимальное значение по оси X среди всех точек: minX и maxX.
  2. Предположить, что ось симметрии — это вертикальная линия x = (minX + maxX) / 2.
  3. Проверить для каждой точки, существует ли точка-отражение относительно этой оси, то есть точка с координатами (2 * axisX - x, y).

Если для всех точек найдется соответствующая отраженная точка, то линия x = axisX является осью симметрии.

Пример на Python:

def has_vertical_symmetry(points):
    xs = [p[0] for p in points]
    min_x, max_x = min(xs), max(xs)
    axis_x = (min_x + max_x) / 2

    points_set = set(points)
    for x, y in points:
        reflected = (2 * axis_x - x, y)
        if reflected not in points_set:
            return False, None
    return True, axis_x

# Пример использования:
points = [(1,2), (3,2), (1,4), (3,4)]
result, axis = has_vertical_symmetry(points)
if result:
    print(f"Ось симметрии: x = {axis}")
else:
    print("Ось симметрии не найдена")

Этот метод работает для дискретного множества точек и проверяет точное совпадение отраженных точек.