5
ヘビで画像を描く
左、右、または真っ直ぐにしか行けず、交差することができず、画像内のピクセルのグリッドなどの長方形のグリッドを埋める必要がある連続した2次元パスを想像してください。この種の道を蛇と呼びます。 この拡大例は、赤から始まり、紫色になるまで各ステップで色相が約2%増加する10×4グリッドの蛇行を示しています。(黒い線は、進む方向を強調するためのものです。) ゴール この人気コンテストの目標は、色が少しずつ連続的に変化する単一のヘビを使用して、特定の画像を再作成しようとするアルゴリズムを作成することです。 プログラムは、任意のサイズのトゥルーカラーイメージと、0〜1の浮動小数点値(許容誤差)を取り込む必要があります。 許容値は、各ピクセルサイズのステップで変化するスネークの色の最大量を定義します。RGBカラーキューブに配置された場合、2つのRGBカラー間の距離を、2つのRGBポイント間のユークリッド距離として定義します。距離は正規化され、最大距離は1、最小距離は0になります。 色距離擬似コード:(すべての入力値が範囲内の整数であると仮定します[0, 255];出力は正規化されます。) function ColorDistance(r1, g1, b1, r2, g2, b2) d = sqrt((r2 - r1)^2 + (g2 - g1)^2 + (b2 - b1)^2) return d / (255 * sqrt(3)) ヘビの現在の色と別の色でこの関数を呼び出した結果が、指定された許容値よりも大きい場合、ヘビはその別の色に変化しない可能性があります。 必要に応じて、異なる色距離関数を使用できます。http://en.wikipedia.org/wiki/Color_differenceにリストされているような、正確で十分に文書化されたものでなければなりません。また、内に収まるように正規化する必要があります[0, 1]。つまり、可能な最大距離は1、最小は0でなければなりません。異なる距離メトリックを使用する場合は、回答でお知らせください。 テスト画像 もちろん、出力画像(および、必要に応じて成長するヘビのアニメーション)を投稿する必要があります。これらのさまざまな画像を、さまざまな低い許容値(おそらく0.005〜0.03)を使用して投稿することをお勧めします。 (大きな波) 勝利基準 述べたように、これは人気コンテストです。最も高く投票された答えが勝ちます。入力画像の最も正確で審美的に「蛇の道」の描写を提供する回答は、投票する必要があります。 実際にヘビではない画像を悪意を持って送信していることが判明したユーザーは、永久に失格になります。 ノート 使用できるスネークパスは1つだけであり、同じピクセルに2回触れることなく画像を完全に埋める必要があります。 ヘビは画像のどこからでも開始および終了できます。 ヘビはどんな色からでも始まります。 ヘビは画像の境界内に留まる必要があります。境界は循環的ではありません。 ヘビは一度に斜めに移動したり、1ピクセル以上移動したりすることはできません。