PRISM(Precariously Redirected Illumination Safety Management)의 연구원인 여러분은 실험용 크리스털 프리즘을 검사하는 정밀 레이저 보정 시스템을 다루고 있어요. 이 크리스털은 차세대 광학 컴퓨터용으로 개발 중인데, 각 크리스털은 분자 구조에 따라 고유한 굴절 특성을 가져요. 연구실의 레이저 시스템은 크리스털이 예상치 못한 빛을 받으면 크리스털을 손상시킬 수 있어서, 정확한 경로 예측이 매우 중요해요.
레이저 배열을 활성화하기 전에, 결정이 부딪히는 정확한 순서를 샘플 ID로 예측해야 해요.
다음 결정 배열 구성을 살펴봐요:
{
"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)을 따라 이동하다가 위치 (10, 0)에서 처음으로 결정 #2와 만나요.
이 결정은 굴절 각도가 90°라서, 광선을 현재 경로에 수직으로 꺾어요.
원래 0°로 진행하던 광선은 이제 90°(수직 위쪽) 방향으로 바뀌어요.
2단계: 이제 광선은 위치 (10, 0)에서 수직 위쪽으로 이동해 위치 (10, 10)에 있는 결정 #1에 부딪혀요.
이 결정은 굴절 각도가 -90°라서, 광선을 현재 방향을 기준으로 -90°만큼 꺾어요.
광선은 90°로 진행하고 있었으므로, 굴절 후에는 0°(90° + (-90°) = 0°)가 되어 다시 오른쪽으로 수평으로 나아가요.
3단계: 위치 (10, 10)에서 광선은 수평으로 이동해 위치 (30, 10)에서 결정 #3과 만나요.
이 결정은 광선을 45°만큼 굴절시켜 방향을 45°로 바꿔요.
광선은 배열 너머 빈 공간으로 계속 나아가요.
Exercism에 가입하고 Go 트랙을 개념 34개연습 문제 165개, 그리고 실제 사람의 멘토링과 함께 배우고 익혀 보세요. 모두 무료예요.