Du bist Forscher bei PRISM (Precariously Redirected Illumination Safety Management) und arbeitest mit einem Präzisionslaser-Kalibrierungssystem, das experimentelle Kristallprismen testet. Diese Kristalle werden für die nächste Generation optischer Computer entwickelt. Jeder von ihnen hat einzigartige Brechungseigenschaften, die sich aus seiner Molekülstruktur ergeben. Das Lasersystem des Labors kann Kristalle beschädigen, wenn sie unerwartetem Licht ausgesetzt werden. Deshalb ist es entscheidend, den Strahlengang präzise vorherzusagen.
Bevor du das Laserarray aktivierst, musst du die genaue Reihenfolge vorhersagen, in der die Kristalle getroffen werden. Die Kristalle werden dabei durch ihre Proben-IDs identifiziert.
Betrachte diese Konfiguration eines Kristallarrays:
{
"start": { "x": 0, "y": 0, "angle": 0 },
"prisms": [
{ "id": 1, "x": 10, "y": 10, "angle": -90 },
{ "id": 2, "x": 10, "y": 0, "angle": 90 },
{ "id": 3, "x": 30, "y": 10, "angle": 45 },
{ "id": 4, "x": 20, "y": 0, "angle": 0 }
]
}
Der Laser startet im Ursprung (0, 0) und feuert waagerecht nach rechts unter einem Winkel von 0°. Hier ist der Weg des Strahls Schritt für Schritt:
Schritt 1: Der Strahl bewegt sich entlang der x-Achse (y = 0) und trifft zuerst auf Kristall #2 an Position (10, 0).
Dieser Kristall hat einen Brechungswinkel von 90°, das heißt, er lenkt den Strahl senkrecht zu seinem aktuellen Weg ab.
Der Strahl war ursprünglich mit 0° unterwegs und wird jetzt auf 90° umgelenkt (senkrecht nach oben).
Schritt 2: Der Strahl bewegt sich nun von Position (10, 0) senkrecht nach oben und trifft auf Kristall #1 an Position (10, 10).
Dieser Kristall hat einen Brechungswinkel von -90° und lenkt den Strahl um -90° relativ zu seiner aktuellen Richtung ab.
Der Strahl war mit 90° unterwegs, nach der Brechung ist er also bei 0° (90° + (-90°) = 0°) und bewegt sich wieder waagerecht nach rechts.
Schritt 3: Von Position (10, 10) aus bewegt sich der Strahl waagerecht und trifft auf Kristall #3 an Position (30, 10).
Dieser Kristall bricht den Strahl um 45° und ändert seine Richtung auf 45°.
Der Strahl läuft weiter in den leeren Raum hinter dem Array.
Melde dich bei Exercism an, um Go mit 34 Konzepte165 Übungen und echtem menschlichen Mentoring zu lernen und zu meistern, alles kostenlos.