2
2次元光線追跡
課題は、テキストベースの2次元レイトレーシングプログラムを実装することです。 白色光源は@シンボルです。R、GおよびB光フィルターです。/そして\80%の反射率のミラーです。?光センサーです。>、<、^およびV適切な方向に光結合する(例えば、1つは赤と一つの緑が入ってきた場合に>右に向けて出射される光と、それは黄色であろう)。その他の非空白文字はすべての光を吸収します。@シンボルから4方向に光が放射されます。 プログラムを実行すると、入力と同じ出力が生成されますが、光線はトレースされます。これは2次元であり、入力では光線が交差しないことを保証しているため、問題はありません。各光線は文字で表す必要があります。r =赤、g =緑、b =青、c =シアン、m =マゼンタ、y =黄色、w =白。三元色はありません。ケーシングは、入力と区別するために重要です。その出力後、疑問符でキャプチャされた光の値(出現順に左から右、上から下へ)がパーセンテージと色として出力されます。たとえば、次の入力: / @ - \R> ? @B/ 出力を与える必要があります: /wwwwwwwwwwwwwwwwww@w w - w\R>mmmmmmmmmmmmmmmmm? w b @B/ #1: 72% Magenta 注意すべきもう1つの重要な点-「プリズム」(矢印)を使用して2つの色を組み合わせると、組み合わされた光の強度が2つの色の平均強度になります。出力は指定されたとおりでなければなりません(例:#x:[x] [x] x%Color)。 言語がSTDINから読み取ってSTDOUTに書き込めない場合は、入力を引数として受け入れ、結果を返す関数(使用可能な場合は匿名またはラムダ)を作成します。 コンパイラへのディレクティブ、言語で作成されたすべてまたはほとんどのプログラムに必要または推奨される構造などは省略できます。例えば、#include及びusing(ただしディレクティブ#define)は、Cスタイルの言語で除去することができる#/usr/bin/perl -optionsPerlで、かつ Module Module1 Sub Main() End Sub End Module たとえば、VB.NETで。名前空間をインポートするか、includeディレクティブを追加する場合は、回答にそれらを記録してください。 これで十分ですか?:)