トラック
/
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°に変えます。 ビームは配列の先の何もない空間へと進み続けます。

"3つのプリズムで屈折するレーザービームの経路を示したグラフ。""3つのプリズムで屈折するレーザービームの経路を示したグラフ。"


出典

FraSangaリンクは新しいウィンドウまたはタブで開きます
GitHubで編集する リンクは新しいウィンドウまたはタブで開きます
Go Exercism

プリズムを始める準備はできましたか?

Exercismに登録すれば、34個のコンセプト165個の演習、そして本物の人間によるメンタリングとともに、Goを学んでマスターできます。すべて無料です。