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