Kreise und Quadrate haben einen einzigen, bestimmten Mittelpunkt. Der Begriff des Mittelpunkts eines Dreiecks ist jedoch schon lange diskutiert worden. Den alten Griechen waren vier verschiedene Zentren bekannt:
- Incenter : Der Schnittpunkt der Winkelhalbierenden des Dreiecks
- Schwerpunkt : Der Schnittpunkt der Linien von jedem Scheitelpunkt des Dreiecks zur Mitte der gegenüberliegenden Seite
- Circumcenter : Der Schnittpunkt der senkrechten Winkelhalbierenden der Seiten
- Orthozentrum : Der Schnittpunkt der Höhen des Dreiecks
Euler bewies später, dass der Schwerpunkt, das Zirkumzentrum und das Orthozentrum in jedem Dreieck kollinear sind. Die Linie, auf der sich diese drei Punkte in einem Dreieck befinden, wird als Euler-Linie bezeichnet . Es wird für jedes Dreieck definiert, mit Ausnahme eines gleichseitigen Dreiecks, bei dem alle Punkte zusammenfallen.
Ihre Herausforderung besteht darin, das kürzeste Programm oder die kürzeste Funktion zu erstellen, die bei zwei Eingaben einen bestimmten Mittelpunkt oder die Euler-Linie des Dreiecks ausgibt. Die erste gibt die Koordinaten jedes Scheitelpunkts eines Dreiecks an. Die Sekunde ist eine Ganzzahl von 1 bis 5, die bestimmt, was ausgegeben werden soll.
1 - Incenter
2 - Centroid
3 - Circumcenter
4 - Orthocenter
5 - Equation of Euler Line
(if the Euler Line is vertical, output the `x` value of the line
(e.g. output `5` if the equation of the line is `x = 5`))
Sie können davon ausgehen, dass die angegebenen Eckpunkte niemals kollinear und immer ganzzahlige Koordinaten sind (dies schließt auch die Möglichkeit aus, ein gleichseitiges Dreieck als Eingabe gemäß dem Kommentar von @ R.Kap zu verwenden ).
Das Eingabearray sollte ein gültiges verschachteltes Array in Ihrer Sprache sein und die Eingabe sollte in einem angemessenen Format erfolgen. Alle Float-Werte sollten mit mindestens 3 Dezimalstellen, jedoch nicht weniger, angezeigt werden. Ein ausgegebener Punkt sollte ein gültiges Array in Ihrer Sprache sein, das mit dem Eingabeformat übereinstimmt.
Testfälle:
Input: [(-2, 0), (1, 0), (0, 1)] 1
Output: (-0.089, 0.451)
Input: [(-2, 0), (1, 0), (0, 1)] 2
Output: (-0.333, 0.333)
Input: [(-2, 0), (1, 0), (0, 1)] 3
Output: (-0.5, -0.5)
Input: [(-2, 0), (1, 0), (0, 1)] 4
Output: (0, 2)
Input: [(-2, 0), (1, 0), (0, 1)] 5
Output: 5x + 2
Erläuterung: Die Eingabe kann entweder von stdin, durch Leerzeichen oder Zeilenumbrüche getrennt oder als Argument für eine Funktion erfolgen. Die Ausgabe muss jedoch auf stdout geschrieben werden.
y=f(x).
(if the triangle is equilateral, output the point at which the centers meet)da es nicht möglich ist, ein gleichseitiges Dreieck in der Koordinatenebene nur mit ganzzahligen Koordinaten zu erstellen.