К задачам

Путь через квадрат с круглыми препятствиями

СложнаяАлгоритмы
Лучше работает на десктопе
ГеометрияГрафыСистема непересекающихся множествDFS

Дан единичный квадрат с координатами от (0, 0) до (1, 1).

Внутри или около квадрата расположены круги-препятствия. Каждый круг задан как [x, y, r]: центр и радиус.

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

Ограничения:

  • нельзя заходить внутрь кругов;
  • нельзя касаться кругов;
  • нельзя выходить за пределы квадрата;
  • касание кругов друг с другом или с границей считается блокировкой.

Сигнатура

def can_cross_square(circles: list[list[float]]) -> bool:

Идея

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

Примеры

Пример 1

Вход:
circles = []
Выход:true

Без препятствий путь существует

Пример 2

Вход:
circles = [[0.5,0.5,0.1]]
Выход:true

Один небольшой круг не режет квадрат

Пример 3

Вход:
circles = [[0.5,0.5,0.5]]
Выход:false

Круг касается top и bottom

Код
Python · Ctrl/⌘ + Enter для запуска
Лимит
08:00
Консоль
Нажмите кнопку запуска или Ctrl+Enter
Путь через квадрат с круглыми препятствиями — Алгоритмы задача — ML Mentor