프리즘

프리즘

보통

소개

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°로 바꿔요. 광선은 배열 너머 빈 공간으로 계속 나아가요.

"세 개의 프리즘을 통해 굴절된 레이저 광선의 경로를 보여 주는 그래프.""세 개의 프리즘을 통해 굴절된 레이저 광선의 경로를 보여 주는 그래프."


출처

FraSanga링크가 새 창이나 탭에서 열려요
GitHub에서 편집 링크가 새 창이나 탭에서 열려요
Go Exercism

프리즘 문제를 시작해 볼 준비가 됐나요?

Exercism에 가입하고 Go 트랙을 개념 34개연습 문제 165개, 그리고 실제 사람의 멘토링과 함께 배우고 익혀 보세요. 모두 무료예요.