Einführung
Stellen Sie sich vor, Sie befinden sich auf einer zweidimensionalen kartesischen Ebene und möchten Ihre Position darauf bestimmen. Sie kennen 3 Punkte in dieser Ebene und Ihre Entfernung zu jedem von ihnen. Während es immer möglich ist, Ihre Position daraus zu berechnen, ist es ziemlich schwierig, dies in Ihrem Kopf zu tun. Also beschließen Sie, ein Programm dafür zu schreiben.
Die Herausforderung
Geben Sie bei 3 Punkten und Ihrer Entfernung zu ihnen die Koordinaten Ihrer Position aus.
- Die Eingabe und Ausgabe kann in jedem geeigneten Format erfolgen, einschließlich der Verwendung komplexer statt reeller Zahlen. Bitte klären Sie in Ihrer Antwort, welches Format Sie verwenden.
- Sie erhalten immer genau 3 verschiedene Punkte mit ihrer Entfernung zu Ihnen.
- Die Koordinaten und Abstände sind Gleitkommazahlen mit beliebiger Genauigkeit. Ihre Ausgabe muss auf 3 Dezimalstellen korrekt sein. Die Rundung liegt bei Ihnen. Bitte klären Sie in Ihrer Antwort.
- Sie können davon ausgehen, dass die drei Punkte nicht kollinear sind, sodass es immer eine eindeutige Lösung gibt.
- Sie dürfen die Lösung nicht brutal erzwingen.
- Sie dürfen keine integrierten Funktionen verwenden, die dieses spezielle Problem trivialisieren. Builtins für Vektornormen usw. sind jedoch zulässig.
Tipp, um loszulegen:
Stellen Sie sich einen Kreis um jeden dieser 3 Punkte mit ihrem Abstand zu Ihnen als Radius vor.
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
Das Eingabeformat für einen Punkt ist hier [[x,y],d]
mit x
und y
als Koordinaten und d
als Abstand zu diesem Punkt. Die 3 dieser Punkte sind in einer Liste angeordnet. Die Ausgabe erfolgt x
und dann y
in einer Liste.
[[[1, 2], 1.414], [[1, 1], 2.236], [[2, 2], 1.0]] -> [2, 3] [[[24.234, -13,902], 31,46], [[12,3242, 234,12], 229,953], [[23,983, 0,321], 25,572]] -> [-1,234, 4,567] [[[973.23, -123.221], 1398.016], [[-12.123, -98.001], 990.537], [[-176.92, 0], 912.087]] -> [12.345, 892.234]
Mit diesem Pyth-Programm können Sie zusätzliche Testfälle generieren . Die Position befindet sich in der ersten Zeile der Eingabe und die 3 Punkte befinden sich in den folgenden 3 Zeilen.
Viel Spaß beim Codieren!
solve
trivialisiert das Problem (drei Kreis Gleichungen gegeben)? Ich dachte es wäre, aber wenn du mit solchen Dingen einverstanden bist, werde ich es veröffentlichen.