Ще в той час усі 1337 дітей використовували текстові фейдери у чатах. Не знаю про вас, хлопці, але я хочу відчувати себе круто, як вони. Єдина проблема полягає в тому, що їхні старі сценарії та програми були сильно поєднані з програмним забезпеченням, для якого вони були створені, тому я не можу просто використовувати цю дивовижну функціональність там, де мені захочеться. Я також хочу, щоб рішення було легко портативним, тому вам знадобиться зробити код якомога меншим, щоб він міг розміститися на моїй дискеті (я б краще взяти з собою лише одну дискету, але якщо ваш вихідний код занадто великий Я можу перевезти більше одного : P ).
Вхідні дані
- Список кольорів (rgb, hex, назви тощо)
- Текст для форматування
Ваша програма повинна очікувати, що список кольорів містить щонайменше два кольори.
Формат тексту може бути будь-якої довжини більше нуля, а символи обмежуватимуться для друку ascii. (Підказка. Більш довгі введення тексту можуть вимагати повторного використання проміжних кольорів для послідовних символів)
Вихідні дані
Текст виводу не повинен відрізнятися від тексту введення будь-яким іншим способом, крім шрифту та / або розмітки / стилю (Примітка: якщо ваш вихід містить розмітку html, вам потрібно буде кодувати HTML введенням). Ви можете виводити текст з розміткою / стилем (теги стилів HTML, кольори консолей тощо) або зображенням зів’ялого тексту. Усі шістнадцяткові кольори повинні бути присутніми у висновку, якщо вхідне повідомлення не містить достатньо символів для задоволення цієї вимоги. Якщо це так, то зверніться до правил пріоритету, щоб визначити, які кольорові шестигранники повинні бути у вашому висновку. Порядок або ці кольори у вашому висновку все одно повинні бути порядком введення.
Правила пріоритету кольорів
- У випадку, якщо вхід є одним символом, буде використаний перший колір
- У випадку, якщо є лише два символи, буде використано перший і останній кольори
- У випадку, якщо є більше трьох кольорів і більше кольорів, ніж символів, слід встановити пріоритет першого та останнього кольорів, а потім решти кольорів у їх введеному порядку.
- У випадку, якщо символів більше, ніж кольорів, символи повинні зникати від одного кольору до іншого, використовуючи проміжні кольори
Приклади (правила пріоритету 1-3 відповідно):
# Кольори | Колір 0 | ... | Колір n | Текст
3 ff0000 0000ff ffff00 M-> -> ->
3 ff0000 0000ff ffff00 hi
4 ff0000 0000ff ffff00 0fff00 sup
Щоб було зрозуміло, колір тексту повинен переходити від однієї шестигранної до іншої кольорової. Вимкнення не повинно бути ідеально рівномірним, але воно не повинно бути різкою зміною кольору, якщо не вистачає символів, щоб гарно зів’янути. Як правило, це вицвітання досягається шляхом вибору проміжних кольорів для кожного з символів, збільшуючи / зменшуючи значення 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, у консолі, як зображення тощо).
* Усі чорні фони лише для кольорових акцентів і не потрібні
Оцінка балів
Це код-гольф , тому найкоротша відповідь (у байтах) виграє.
Якщо вам вдасться додати зникнення до окремих персонажів, тоді я назавжди подумаю, що ви круті (але жодного бонусу забити, оскільки це не буде справедливо для деяких мов)
000000та ff0000повинно бути b40000( 255*sqrt((0+1)/2))

#000000і#ff0000немає#800000.