Classe para gerenciar uma hierarquia complexa de figuras geométricas com verificação de interseções

Kotlin Hard classes

Tarefa «Classe para gerenciar uma hierarquia complexa de figuras geométricas com verificação de interseções»

Crie classes para representar figuras geométricas: Point, Circle, Rectangle. A classe Point contém coordenadas x e y (Double). A classe Circle contém centro (Point) e raio (Double). A classe Rectangle contém o canto superior esquerdo (Point) e o canto inferior direito (Point). Implemente em cada classe o método intersects(other: Any): Boolean, que retorna true se a figura intersecta outra figura (círculo com círculo, retângulo com retângulo, círculo com retângulo). Para círculo e retângulo, use a verificação da distância do centro do círculo até o ponto mais próximo do retângulo. No main(), leia da stdin a quantidade de figuras N (1 ≤ N ≤ 100), então para cada figura uma linha: tipo ("Point", "Circle", "Rectangle") e coordenadas. Para Point: x y. Para Circle: x y r. Para Rectangle: x1 y1 x2 y2. Imprima para cada par de figuras (i < j) o resultado da verificação de interseção: "YES" ou "NO" na ordem crescente dos pares.

Formato de Entrada

Um número inteiro N. Em seguida, N linhas, cada uma contendo o tipo da figura e seus parâmetros (coordenadas Double).

Formato de Saída

Para cada par (i, j) com i < j, imprima "YES" ou "NO" na ordem crescente de i, depois j.

Exemplos

Exemplo 1

ENTRADA
5 1 100 100 2 200 200 3 150 300 4 300 400 5 50 1500
SAÍDA
100 400 4 750 187 1500 1500 1 50 50

Exemplo 2

ENTRADA
0
SAÍDA
main.kt