Dies ist ein Minigolf-Loch:
Die äußere Begrenzung ist ein Kreis mit Radius 10 und Mittelpunkt (0,0). Die innere Begrenzung ist ein Kreis mit Radius 3 und Mittelpunkt (0,5). Das Tee ist bei (0, -8). Angenommen, der Ball ist nur ein Punkt mit dem Radius 0.
Die Dynamik des Balls richtet sich nach folgenden Regeln:
Der Ball wird anfänglich mit Energie 50 und mit einem gegebenen Winkel geschlagen.
- Der Winkel ist im kartesischen Koordinatensystem ungleichmäßig. 0 ° bedeutet also direkt nach rechts, 90 ° ist direkt nach oben und so weiter.
Wenn der Ball auf die Kante des inneren oder äußeren Kreises trifft, springt er nach dem Reflexionsgesetz vom Kreis ab.
Der Ball verliert Energie, wenn er sich bewegt.
Für jede Bodeneinheit, die es abdeckt, verliert es 1 Energieeinheit.
Jedes Mal, wenn es von einer Wand abprallt, verliert es 5 Energieeinheiten.
Der Ball stoppt, wenn ihm die Energie ausgeht oder wenn er in das Loch fällt.
Trifft der Ball mit <= 5 Energieeinheiten auf eine Wand, stoppt er.
Es fällt in das Loch, wenn es eine Energie <10 hat, wenn es sich im Abstand von 1 zum Loch befindet, andernfalls bleibt es in Bewegung.
Herausforderung
Geben Sie anhand der xy-Koordinaten eines Lochs einen Winkel zurück, in dem Sie den Ball schlagen können, damit der Ball in das Loch fällt (sofern ein solcher Winkel vorhanden ist).
Eingang
Nehmen Sie als Eingabe die x- und y-Koordinaten der Lochmitte in einer beliebigen Form. Die Eingabe kann über STDIN (oder die nächstgelegene Alternative), Befehlszeilenparameter oder Funktionsargumente erfolgen.
Ausgabe
Drucken Sie einen Winkel in Grad aus oder geben Sie ihn zurück, in dem der Ball vom T-Stück getroffen werden kann, sodass der Ball in das Loch fällt. Wenn ein solcher Winkel existiert, sollte die Ausgabe im Bereich [0, 360) liegen, andernfalls sollte die Ausgabe -1 sein.