Früher verwendeten alle 1337 Kinder Text-Fader in Chatrooms. Ich weiß nichts über euch, aber ich möchte mich cool fühlen wie sie. Das einzige Problem ist, dass ihre alten Skripte und Anwendungen stark an die Software gekoppelt waren, für die sie entwickelt wurden, sodass ich diese erstaunliche Funktionalität nicht einfach nutzen kann, wo immer ich will. Ich möchte auch, dass die Lösung leicht portierbar ist, damit Sie den Code so klein wie möglich machen müssen, damit er auf meine Diskette passt (ich würde lieber nur eine Diskette bei mir haben, aber wenn Ihr Quellcode zu groß ist Ich kann mehr als eine tragen : P ).
Eingang
- Eine Liste der Farben (RGB, Hex, Namen usw.)
- Zu formatierender Text
Ihr Programm sollte erwarten, dass die Liste der Farben mindestens 2 Farben enthält.
Der zu formatierende Text kann eine beliebige Länge größer als Null haben und die Zeichen sind auf druckbare ASCII beschränkt. (Hinweis: Bei längeren Texteingaben müssen Sie möglicherweise Zwischenfarben für aufeinanderfolgende Zeichen wiederverwenden.)
Ausgabe
Der Ausgabetext sollte sich in keiner anderen Weise als Schriftart und / oder Markup / Styling vom Eingabetext unterscheiden (Hinweis: Wenn Ihre Ausgabe HTML-Markup enthält, müssen Sie die Eingabe in HTML codieren). Sie können Text mit Markup / Styling (HTML-Stil-Tags, Konsolenfarben usw.) oder ein Bild des ausgeblendeten Textes ausgeben. Alle Farbfelder sollten in der Ausgabe vorhanden sein, es sei denn, die Eingabe enthält nicht genügend Zeichen, um diese Anforderung zu erfüllen. Wenn dies der Fall ist, konsultieren Sie die Prioritätsregeln, um zu bestimmen, welche Farbfelder in Ihrer Ausgabe vorhanden sein sollen. Die Reihenfolge oder diese Farben in Ihrer Ausgabe sollten weiterhin die Eingabereihenfolge sein.
Farbprioritätsregeln
- Für den Fall, dass die Eingabe ein Zeichen ist, wird die erste Farbe verwendet
- Falls nur zwei Zeichen vorhanden sind, werden die erste und die letzte Farbe verwendet
- Falls es mehr als drei Farben und mehr Farben als Zeichen gibt, sollten die erste und die letzte Farbe priorisiert werden, dann die restlichen Farben in ihrer eingegebenen Reihenfolge.
- Falls mehr Zeichen als Farben vorhanden sind, sollten die Zeichen mithilfe von Zwischenfarben von einer Farbe zur nächsten ausgeblendet werden
Beispiele (Prioritätsregeln 1-3):
# Farben | Farbe 0 | ... | Farbe n | Text
3 ff0000 0000ff ffff00 M-> -> ->
3 ff0000 0000ff ffff00 hi
4 ff0000 0000ff ffff00 0fff00 sup
Um klar zu sein, sollte die Textfarbe von einem Hex-Farbfeld zum nächsten verblassen. Das Überblenden muss nicht perfekt gleichmäßig sein, aber es sollte kein abrupter Farbwechsel sein, es sei denn, es gibt nicht genügend Zeichen, um gut auszublenden. Im Allgemeinen wird diese Überblendung erreicht, indem Zwischenfarben für jedes der Zeichen ausgewählt werden, indem die RGB-Werte um ein Intervall erhöht / verringert werden, das durch die Anzahl der Zeichen, mit denen Sie arbeiten müssen, und den Unterschied zwischen den Farben bestimmt wird. Wenn wir zum Beispiel eine einzelne Farbe zwischen
(# ff0000) und
(# 000000) benötigen, können wir wählen,
wie sie genau in der Mitte sitzt. Die optimale Ausgabe sieht ziemlich hübsch aus.
Beispiel (Prioritätsregel 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>
Bitte geben Sie in Ihrer Antwort an, wie Ihre Ausgabe angezeigt werden soll (als HTML, in einer Konsole, als Bild usw.).
* Alle schwarzen Hintergründe dienen nur der Farbbetonung und sind nicht erforderlich
Wertung
Dies ist Code-Golf , daher gewinnt die kürzeste Antwort (in Bytes).
Wenn Sie es schaffen, einzelnen Charakteren Fade hinzuzufügen, werde ich für immer denken, dass Sie cool sind (aber kein Bonus, um zu punkten, da dies für einige langs nicht fair ist)
000000und ff0000sollte b40000( 255*sqrt((0+1)/2)) sein

#000000und#ff0000ist nicht#800000.