Sobes.tech
Middle+
53

Python tapşırığı: Verilmiş nöqtələr siyahısı üçün şaquli simmetriya oxunun olub-olmadığını müəyyənləşdirin

Şirkətlər soruşuldu
X5

AI-dan cavab

sobes.tech Süni İntellekt

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

Идея решения:

  1. Найти минимальное и максимальное значение x среди точек.
  2. Вычислить потенциальную ось симметрии как axis = (min_x + max_x) / 2.
  3. Для каждой точки проверить, есть ли точка с зеркальной координатой относительно оси: если точка (x, y), то должна существовать точка (2*axis - x, y).

Пример кода на Python:

from collections import defaultdict

def has_vertical_symmetry(points):
    points_set = set(points)
    xs = [x for x, y in points]
    min_x, max_x = min(xs), max(xs)
    axis = (min_x + max_x) / 2
    for x, y in points:
        mirrored = (2*axis - x, y)
        if mirrored not in points_set:
            return False
    return True

# Пример использования
points = [(1,1), (3,1), (2,2)]
print(has_vertical_symmetry(points))  # False

points = [(1,1), (3,1), (2,2), (2,2)]
print(has_vertical_symmetry(points))  # True

Этот метод работает для множества точек и проверяет симметрию относительно вертикальной оси.