轨道
/
Go
Go
/
练习
/
棱镜
棱镜

棱镜

中等

简介

你是 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,借助 34 个概念165 个练习 和真人导师指导,学习并掌握 Go,全部免费。