Sei un ricercatore al PRISM (Precariously Redirected Illumination Safety Management) e lavori con un sistema di calibrazione laser di precisione che collauda prismi di cristallo sperimentali. Questi cristalli vengono sviluppati per i computer ottici di nuova generazione: ognuno ha proprietà di rifrazione uniche, basate sulla sua struttura molecolare. Il sistema laser del laboratorio può danneggiare i cristalli se ricevono un'illuminazione imprevista, quindi prevedere con precisione il percorso è fondamentale.
Prima di attivare l'array di laser, devi prevedere l'ordine esatto in cui i cristalli verranno colpiti, identificati dai loro ID campione.
Considera questa configurazione dell'array di cristalli:
{
"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 }
]
}
Il laser parte dall'origine (0, 0) e viene sparato orizzontalmente verso destra con un angolo di 0°.
Ecco il percorso del raggio, passo dopo passo:
Passo 1: il raggio viaggia lungo l'asse x (y = 0) e incontra per primo il Cristallo n. 2 nella posizione (10, 0).
Questo cristallo ha un angolo di rifrazione di 90°, il che significa che devia il raggio perpendicolarmente al suo percorso attuale.
Il raggio, che viaggiava inizialmente a 0°, viene ora reindirizzato a 90° (verso l'alto).
Passo 2: il raggio ora viaggia verticalmente verso l'alto dalla posizione (10, 0) e colpisce il Cristallo n. 1 nella posizione (10, 10).
Questo cristallo ha un angolo di rifrazione di -90°, che devia il raggio di -90° rispetto alla sua direzione attuale.
Il raggio viaggiava a 90°, quindi dopo la rifrazione si trova a 0° (90° + (-90°) = 0°) e viaggia di nuovo orizzontalmente verso destra.
Passo 3: dalla posizione (10, 10), il raggio viaggia orizzontalmente e incontra il Cristallo n. 3 nella posizione (30, 10).
Questo cristallo rifrange il raggio di 45°, cambiando la sua direzione a 45°.
Il raggio prosegue nello spazio vuoto oltre l'array.
Iscriviti a Exercism per imparare e padroneggiare Wren con 117 esercizi e il mentoring di persone reali, tutto gratis.