最初の行の形式が文字列またはテキストファイルであるプログラムを作成する
width height
後続の各行の形式は
x y intensity red green blue
どこ:
width
また、height
任意の正の整数を指定できます。x
また、y
任意の整数を指定できます。intensity
負でない整数を指定できます。red
、green
、およびblue
0から255までの任意の整数であります。
あなたのプログラムを出力しなければならないトゥルーカラー寸法は任意の一般的なロスレス画像ファイル形式の画像width
によりますheight
。各線x y intensity red green blue
は、画像上に描画する必要があるカラフルな星または球を表します。0を含む、描画する星の数はいくつでもかまいません。文字列またはファイルの末尾に改行があると仮定できます。
画像を描画するアルゴリズムは次のとおりですが、結果が同じである限り、好きな方法で実装できます。
画像のすべてのピクセル(X、Y)(Xは左端が0 、右端がwidth-1、Yは上端が0 、下端がheight-1)に対して、カラーチャネルC ϵ { red、 green、blue }(0から255の間に固定された値)は、次の方程式で与えられます。
どこのdist関数はどちらかであるユークリッド距離:
またはマンハッタン距離:
ゴルフ可能性または美観に基づいて、好みの距離関数を選択します。
入力の最初の行以外の各行は、スターセットの要素です。だから、例えば、SのXが表す
x
入力ラインのいずれかに値を、及びS Cは、いずれかを表しred
、green
またはblue
、これに応じて、カラーチャネルは、現在計算されています。
例
例A
入力が
400 150
-10 30 100 255 128 0
出力は
ユークリッド距離を使用している場合
マンハッタン距離を使用している場合。
例B
入力が
200 200
100 100 10 255 255 255
20 20 40 255 0 0
180 20 40 255 255 0
180 180 40 0 255 0
20 180 40 0 0 255
ユークリッド距離とマンハッタン距離のそれぞれの出力は
および。
例C
入力が
400 400
123 231 10 206 119 85
358 316 27 170 47 99
95 317 3 202 42 78
251 269 17 142 150 153
43 120 3 145 75 61
109 376 6 230 231 52
331 78 21 31 81 126
150 330 21 8 142 23
69 155 11 142 251 199
218 335 7 183 248 241
204 237 13 112 253 34
342 89 18 140 11 123
出力は
ユークリッド距離を使用している場合
マンハッタン距離を使用している場合。
例D
入力が
400 400
123 231 5 206 119 85
358 316 5 170 47 99
95 317 5 202 42 78
251 269 5 142 150 153
43 120 5 145 75 61
109 376 5 230 231 52
331 78 5 31 81 126
150 330 5 8 142 23
69 155 5 142 251 199
218 335 5 183 248 241
204 237 5 112 253 34
342 89 5 140 11 123
出力は
ユークリッド距離を使用している場合
マンハッタン距離を使用している場合。
例E
入力が
100 1
出力は、幅100ピクセル、高さ1ピクセルの完全に黒のイメージになります。
ノート
- 入力文字列またはそれを含むテキストファイルの名前をstdinまたはコマンドラインから取得するか、文字列を取得する関数を記述できます。
- 画像の「出力」とは、次のいずれかを意味します。
- 選択した名前のファイルに保存します。
- 生の画像ファイルのデータを標準出力に印刷します。
- そのような場合と同様に画像表示するPILのを
image.show()
。
- 私はあなたの画像が完璧なピクセルであることをチェックしません(Stack Exchangeはとにかく画像を損失的に圧縮します)。
- グラフィック/画像ライブラリを使用できます。
勝ち
バイト単位の最短提出が勝ちです。同点の場合、最も早い提出が優先されます。
楽しいボーナス:本当に素晴らしい出力画像の入力を提供します。