Класс для управления сложной иерархией геометрических фигур с проверкой пересечений

Kotlin Сложный classes

Задача «Класс для управления сложной иерархией геометрических фигур с проверкой пересечений»

Создайте классы для представления геометрических фигур: Point, Circle, Rectangle. Класс Point содержит координаты x и y (Double). Класс Circle содержит центр (Point) и радиус (Double). Класс Rectangle содержит левый верхний угол (Point) и правый нижний угол (Point). Реализуйте в каждом классе метод intersects(other: Any): Boolean, который возвращает true, если фигура пересекается с другой фигурой (круг с кругом, прямоугольник с прямоугольником, круг с прямоугольником). Для круга и прямоугольника используйте проверку расстояния от центра круга до ближайшей точки прямоугольника. В main() считайте из stdin количество фигур N (1 ≤ N ≤ 100), затем для каждой фигуры строку: тип ("Point", "Circle", "Rectangle") и координаты. Для Point: x y. Для Circle: x y r. Для Rectangle: x1 y1 x2 y2. Выведите для каждой пары фигур (i < j) результат проверки пересечения: "YES" или "NO" в порядке возрастания пар.

Формат ввода

Целое число N. Затем N строк, каждая содержит тип фигуры и её параметры (координаты Double).

Формат вывода

Для каждой пары (i, j) с i < j выведите "YES" или "NO" в порядке возрастания i, затем j.

Примеры

Пример 1

ВВОД
5 1 100 100 2 200 200 3 150 300 4 300 400 5 50 1500
ВЫВОД
100 400 4 750 187 1500 1500 1 50 50

Пример 2

ВВОД
0
ВЫВОД
main.kt