Уявімо себе дослідником у PRISM (Precariously Redirected Illumination Safety Management). Ми працюємо з системою точного лазерного калібрування, яка перевіряє експериментальні кристалічні призми. Ці кристали розробляють для оптичних компʼютерів наступного покоління, і кожен із них має унікальні заломлювальні властивості, зумовлені його молекулярною структурою. Лазерна система лабораторії може пошкодити кристали, якщо на них потрапить непередбачене опромінення, тож точне передбачення траєкторії має критичне значення.
Перш ніж активувати лазерний масив, потрібно передбачити точний порядок, у якому буде вражено кристали, визначений за ідентифікаторами їхніх зразків.
Розгляньмо таку конфігурацію масиву кристалів:
{
"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 }
]
}
Лазер стартує з початку координат (0, 0) і випромінює промінь горизонтально праворуч під кутом 0°.
Ось покроковий шлях променя:
Крок 1: Промінь рухається вздовж осі x (y = 0) і спершу натрапляє на Кристал №2 у позиції (10, 0).
Цей кристал має кут заломлення 90°, тобто він заломлює промінь перпендикулярно до його поточного напрямку.
Промінь, який спочатку рухався під кутом 0°, тепер перенаправлено на 90° (прямо вгору).
Крок 2: Тепер промінь рухається вертикально вгору від позиції (10, 0) і влучає в Кристал №1 у позиції (10, 10).
Цей кристал має кут заломлення -90°, заломлюючи промінь на -90° відносно його поточного напрямку.
Промінь рухався під кутом 90°, тож після заломлення він тепер під кутом 0° (90° + (-90°) = 0°) і знову рухається горизонтально праворуч.
Крок 3: Від позиції (10, 10) промінь рухається горизонтально і натрапляє на Кристал №3 у позиції (30, 10).
Цей кристал заломлює промінь на 45°, змінюючи його напрямок на 45°.
Промінь продовжує рух у порожній простір за межами масиву.
Зареєструйтеся на Exercism, щоб вивчати й опановувати Go, а також 34 концепції165 вправ та справжнє наставництво від людей, і все це безкоштовно.