当時、1337人の子供全員がチャットルームでテキストフェーダーを使用していました。君たちのことは知らないが、彼らのようにクールに感じたい。唯一の問題は、古いスクリプトとアプリケーションが、それらが作成されたソフトウェアと大きく結びついていることです。そのため、この驚くべき機能をどこでも利用することはできません。また、ソリューションを簡単に移植できるようにしたいので、フロッピーディスクに収まるようにコードをできる限り小さくする必要があります(ソースコードが大きすぎる場合は、フロッピーを1枚しか持ちません私は複数を運ぶことができます:P)。
入力
- 色のリスト(rgb、hex、namesなど)
- フォーマットするテキスト
プログラムでは、色のリストに少なくとも2色が含まれている必要があります。
フォーマットするテキストの長さはゼロより大きくすることができ、文字は印刷可能なアスキーに制限されます。(ヒント:長いテキスト入力では、連続する文字の中間色を再利用する必要がある場合があります)
出力
出力テキストは、フォントおよび/またはマークアップ/スタイリング以外の点で入力テキストと異なるべきではありません(注:出力にhtmlマークアップが含まれている場合、入力をhtmlエンコードする必要があります)。マークアップ/スタイリング(htmlスタイルタグ、コンソールの色など)を使用してテキストを出力したり、色あせたテキストの画像を出力したりできます。入力にこの要件を満たすのに十分な文字が含まれていない場合を除き、すべてのカラーヘックスが出力に存在する必要があります。この場合、優先ルールを参照して、出力にどの色のヘックスが存在するかを決定してください。出力の順序またはこれらの色は、入力順序のままです。
色優先ルール
- 入力が1文字の場合、最初の色が使用されます
- 文字が2つしかない場合、最初と最後の色が使用されます
- 3色よりも多く、文字よりも多くの色がある場合、最初と最後の色に優先順位を付け、次に残りの色を入力順に並べる必要があります。
- 色よりも文字が多い場合、文字は中間色を使用してある色から次の色にフェードする必要があります
例(それぞれ優先規則1〜3):
#色| カラー0 | ... | カラーn | テキスト
3 ff0000 0000ff ffff00 M-> -> ->
3 ff0000 0000ff ffff00 hi
4 ff0000 0000ff ffff00 0fff00 sup
明確にするために、テキストの色は1つの色のヘックスから次のヘックスにフェードする必要があります。フェードは完全に均一である必要はありませんが、きれいにフェードするのに十分なキャラクターがいない限り、急激な色の変化であってはなりません。通常、このフェードは、作業する必要のある文字の数と色の違いによって決まる間隔でrgb値をインクリメント/デクリメントすることにより、各文字の中間色を選択することによって実現されます。たとえば、
(#ff0000)と
(#000000)の間の単一の色が必要な場合
、真ん中に配置するように選択できます。最適な出力はかなりきれいに見えます。
例(優先度ルール4):
3 ff0000 ff7f00 f0ff00 To be or not to be, that is the question...->
-OR-
<span style="color:#ff0000;">T</span><span style="color:#ff0600;">o</span><span style="color:#ff0c00;"> </span><span style="color:#ff1200;">b</span><span style="color:#ff1800;">e</span><span style="color:#ff1e00;"> </span><span style="color:#ff2400;">o</span><span style="color:#ff2a00;">r</span><span style="color:#ff3000;"> </span><span style="color:#ff3600;">n</span><span style="color:#ff3c00;">o</span><span style="color:#ff4300;">t</span><span style="color:#ff4900;"> </span><span style="color:#ff4f00;">t</span><span style="color:#ff5500;">o</span><span style="color:#ff5b00;"> </span><span style="color:#ff6100;">b</span><span style="color:#ff6700;">e</span><span style="color:#ff6d00;">,</span><span style="color:#ff7300;"> </span><span style="color:#ff7900;">t</span><span style="color:#ff7f00;">h</span><span style="color:#fe8500;">a</span><span style="color:#fe8b00;">t</span><span style="color:#fd9100;"> </span><span style="color:#fc9700;">i</span><span style="color:#fb9d00;">s</span><span style="color:#fba400;"> </span><span style="color:#faaa00;">t</span><span style="color:#f9b000;">h</span><span style="color:#f9b600;">e</span><span style="color:#f8bc00;"> </span><span style="color:#f7c200;">q</span><span style="color:#f6c800;">u</span><span style="color:#f6ce00;">e</span><span style="color:#f5d400;">s</span><span style="color:#f4da00;">t</span><span style="color:#f4e100;">i</span><span style="color:#f3e700;">o</span><span style="color:#f2ed00;">n</span><span style="color:#f1f300;">.</span><span style="color:#f1f900;">.</span><span style="color:#f0ff00;">.</span>
回答では、出力の表示方法を指定してください(html、コンソール、画像など)。
*すべての黒の背景は色を強調するためのものであり、必須ではありません
得点
これはcode-golfであるため、最短回答(バイト単位)が優先されます。
あなたが個々のキャラクターにフェードを追加することができれば、私はあなたがクールだと永遠に思います(しかし、これはいくつかの言語では公平ではないため、スコアにボーナスはありません)
000000とff0000する必要がありますb40000(255*sqrt((0+1)/2))

#000000およびの平均はで#ff0000ありません#800000。