Middle — Senior
29
Как определить вертикальную ось симметрии для списка точек?
Компании, где спрашивали
Ответ от нейросети
sobes.tech AI
Чтобы определить вертикальную ось симметрии для набора точек на плоскости, можно воспользоваться следующим подходом:
- Найти минимальное и максимальное значение по оси X среди всех точек:
minXиmaxX. - Предположить, что ось симметрии — это вертикальная линия
x = (minX + maxX) / 2. - Проверить для каждой точки, существует ли точка-отражение относительно этой оси, то есть точка с координатами
(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("Ось симметрии не найдена")
Этот метод работает для дискретного множества точек и проверяет точное совпадение отраженных точек.