Klasse zur Verwaltung einer komplexen Hierarchie geometrischer Figuren mit Schnittpunktprüfung

Kotlin Hard classes

Aufgabe «Klasse zur Verwaltung einer komplexen Hierarchie geometrischer Figuren mit Schnittpunktprüfung»

Erstellen Sie Klassen zur Darstellung geometrischer Figuren: Point, Circle, Rectangle. Die Klasse Point enthält die Koordinaten x und y (Double). Die Klasse Circle enthält den Mittelpunkt (Point) und den Radius (Double). Die Klasse Rectangle enthält die obere linke Ecke (Point) und die untere rechte Ecke (Point). Implementieren Sie in jeder Klasse die Methode intersects(other: Any): Boolean, die true zurückgibt, wenn sich die Figur mit einer anderen Figur schneidet (Kreis mit Kreis, Rechteck mit Rechteck, Kreis mit Rechteck). Verwenden Sie für Kreis und Rechteck die Überprüfung des Abstands vom Kreismittelpunkt zum nächstgelegenen Punkt des Rechtecks. In main() lesen Sie aus stdin die Anzahl der Figuren N (1 ≤ N ≤ 100), dann für jede Figur eine Zeile: Typ ("Point", "Circle", "Rectangle") und Koordinaten. Für Point: x y. Für Circle: x y r. Für Rectangle: x1 y1 x2 y2. Geben Sie für jedes Figurenpaar (i < j) das Ergebnis der Schnittpunktprüfung aus: "YES" oder "NO" in aufsteigender Reihenfolge der Paare.

Eingabeformat

Eine ganze Zahl N. Dann N Zeilen, jede enthält den Figurentyp und seine Parameter (Koordinaten Double).

Ausgabeformat

Für jedes Paar (i, j) mit i < j geben Sie "YES" oder "NO" in aufsteigender Reihenfolge von i, dann j aus.

Beispiele

Beispiel 1

EINGABE
5 1 100 100 2 200 200 3 150 300 4 300 400 5 50 1500
AUSGABE
100 400 4 750 187 1500 1500 1 50 50

Beispiel 2

EINGABE
0
AUSGABE
main.kt