Die Herausforderung
Geben Sie bei einer beliebigen Anzahl von Rechtecken die Gesamtzahl der Schnittpunkte dieser Rechtecke aus, wenn diese in einer 2D-Ebene gezeichnet werden.
Ein Schnittpunkt ist hier definiert als ein Punkt, P
der von zwei Linien gekreuzt wird, die orthogonal zueinander sind und beide nicht enden P
.
Beispiel
Jedes Rechteck wird hier durch ein 2-Tupel gekennzeichnet, wobei die Koordinaten der oberen linken Ecke zuerst und die Koordinaten der unteren rechten Ecke an zweiter Stelle stehen.
[(-8,6), (-4, -2)] [(-4,9), (4,3)] [(2,10), (14,4)] [(1,7), (10, -6)] [(7,4), (10,2)] [(5,2), (9, -4)] [(-6, -4), (-2, -6)]
Diese Rechtecke erzeugen 6 Schnittpunkte, die Ihre Ausgabe sein müssen.
- Wie Sie im obigen Bild sehen können, werden durch Berühren von Rechtecken hier keine Schnittpunkte erstellt und nicht gezählt.
- Sie können die Rechtecke in jedem gewünschten Format codieren. Machen Sie deutlich, welches Format Sie verwenden.
- Wenn sich mehrere Rechtecke am selben Punkt schneiden, zählt dies nur als ein Schnittpunkt.
- Die Koordinaten sind immer ganze Zahlen.
- Die Eingabe enthält keine doppelten Rechtecke.
- Sie erhalten immer mindestens ein Rechteck als Eingabe.
- Sie dürfen keine integrierten Funktionen verwenden, die dieses Problem direkt lösen. Außerdem dürfen Sie keine integrierten Funktionen verwenden, die Gleichungen lösen. Alle anderen Einbauten sind erlaubt.
- Die Ausgabe muss eine einzelne Ganzzahl sein, die die Anzahl der Schnittpunkte angibt.
Regeln
- Funktion oder volles Programm erlaubt.
- Standardregeln für die Eingabe / Ausgabe.
- Es gelten Standardlücken .
- Dies ist Code-Golf , also gewinnt die niedrigste Byte-Anzahl. Tiebreaker ist eine frühere Einreichung.
Testfälle
Gleiches Format wie im obigen Beispiel. Die Rechtecke werden in eine Liste eingeschlossen.
[[(-8,6), (-4, -2)], [(-4,9), (4,3)], [(2,10), (14,4)], [(1 , 7), (10, -6)], [(7,4), (10,2)], [(5,2), (9, -4)], [(-6, -4), (-2, -6)]] -> 6 [[(-2,2), (6, -4)]] -> 0 [[(-12,10), (- 8,6)], [(- 14,6), (- 10,2)], [(- 10,6), (- 6,2)]] - > 0 [[(-4,10), (6,2)], [(- 2,8), (4,3)], [(1,6), (8,4)], [(2,11 ), (5,5)]] -> 10 [[(8,2), (12, -2)], [(10,0), (14, -4)] -> 2 [[(0,2), (2,0)], [(0,1), (3,0)]] -> 1 [[(-10, -2), (-6, -6)], [(-6, -2), (-2, -6)], [(-8, -4), (-4, -8)]] -> 3
Viel Spaß beim Codieren!
[[(0,0),(1,2)],[(0,0),(2,1)]]
ich also 1 Kreuzung?