Ein Berg ist definiert als eine Menge von Liniensegmenten, deren erster Punkt Koordinaten hat, (0,a)
wo a > 0
und deren letzter Punkt Koordinaten hat (b,0)
, wo b > 0
. Alle Zwischenpunkte haben eine y-Koordinate (Ordinate), die streng grĂśĂer als 0 ist. Sie erhalten die Punkte auf dem Berg in aufsteigender Reihenfolge der x-Koordinate (Abszisse) sortiert. Beachten Sie, dass zwei Punkte dieselbe x-Koordinate haben kĂśnnen, wodurch ein vertikaler Abschnitt des Berges erzeugt wird. Wenn Sie zwei Punkte mit derselben x-Koordinate erhalten, sollten diese in der angegebenen Reihenfolge verbunden werden. AuĂerdem kann es horizontale Segmente des Berges geben. Diese horizontalen Segmente werden auf keinen Fall beleuchtet. Alle Koordinaten sind nicht negative Ganzzahlen.
Die Frage: Was ist die Gesamtlänge des Berges, der beleuchtet werden wßrde, vorausgesetzt, die Sonne ist eine unendliche vertikale Lichtebene rechts vom Berg? Diese Zahl muss nicht gerundet werden. Wenn sie jedoch gerundet ist, mßssen mindestens vier Dezimalstellen angegeben werden. Ich habe ein Bild beigefßgt: Hier stellen die Linien, die fett gedruckt sind, die Segmente dar, die beleuchtet sind. Beachten Sie, dass P in der Eingabe vor Q steht (PQ ist ein vertikales Liniensegment), sodass der vorherige Punkt mit P und nicht mit Q verbunden ist.
Sie kĂśnnen Eingaben in jedem vernĂźnftigen Format vornehmen, z. B. in Form einer Liste von Listen, einer einzelnen Liste, einer Zeichenfolge usw.
Testfall:
(0,3000)
(500, 3500)
(2500, 1000)
(5000,5000)
(9000,2000)
(9000,3500)
(10200,0)
Output: 6200.0000
Hier gibt es zwei beleuchtete Segmente, wie in diesem Bild gezeigt: Das erste hat eine Länge von 5000/2 = 2500 und das zweite eine Länge von 3700.
Das ist Code-Golf , also gewinnt die kĂźrzeste Antwort in Bytes.
(x1, y1)
und(x2,y2)
. den Punkt, wird als âBlockierenâ ist(x3, y3)
. es sei angenommen , y2 <y3 <= y1. Dann wird die Länge des Segments((y1 - y3)/(y1 - y2))*sqrt((x1 - x2)^2 + (y1 - y2)^2)
. Dies ist im wesentlichen der Entfernungsformel, multipliziert mit dem Bruchteil des tatsächlich verwendeten Segments