Я немного скучаю по тем старым демонстрациям, показывающим возможности компьютеров, когда они назывались x86 вместо i3, i5 и i7. Одним из первых, которые я посмотрел в своих 386, была демо-версия Unreal от Future Crew, которая сейчас празднует свое 25-летие. В минуту 0:43 начинается первая часть демонстрации, и мы видим прокручиваемый текст по синусоидальному пути. Попробуем подражать этому эффекту в искусстве ASCII!
Соревнование
Учитывая этот путь:
*** ***
*** ***
** **
* *
* *
* *
* *
** **
*** ***
******
и входной текст, нарисуйте текст по этому пути, например так:
Thi Golf!
s i de Yay
s Co !
P
r d
o n
g a
ra s
mmi zle
ng Puz
Обратите внимание, что пробелы считаются символами в пути, и что путь повторяется, если текст длиннее образца.
Анимационная часть
После того как вы нарисовали текст, подождите 100 мс (чтобы создать анимацию около 10 кадров в секунду) и снова нарисуйте текст, но начиная со следующей позиции пути. Таким образом, для фрейма #n
рассчитайте n modulo 40
и начните рисовать в следующей позиции пути с текстом, всегда выровненным по левому краю холста:
*** ***
| *** *** |
| ** ** |
| * * |
| * * |
| * * |
| * * |
| ** ** |
| *** *** |
| ****** |
Position 0 Position 39
Таким образом, для кадра 10 мы будем иметь:
and Co
es de
zl Go
z l
u f
T P !
h
is ng Ya
is mmi y!
Progra
Заметки
- Ввод будет одним
string
(илиchar
массивом) с текстом для анимации, и всегда будет содержать как минимум 1 символ. - Допустимые символы для анимации - те, которые находятся в наборе ASCII для печати .
- Путь для следования будет в точности как указано.
- Текст всегда будет выровнен по левому краю холста, поэтому эффект будет заключаться в том, что текст будет развеваться, как флаг, без смещения текста. И под холстом я подразумеваю экран или что-то, что вы будете использовать, чтобы показать текст . ;-)
- Кадры должны быть очищены от любых символов / пикселей из предыдущих кадров, если символ / пиксель не совпадают в обоих кадрах.
- Скорость анимации не имеет значения, если она работает плавно или так быстро, как ваше устройство (мы можем установить минимум 5 кадров в секунду, но это не является обязательным требованием). Просто отрегулируйте скорость, чтобы сделать ее плавной, и не беспокойтесь, если время ожидания не совпадает.
- Анимация будет повторяться бесконечно.
Это код-гольф , поэтому может выиграть самая короткая программа или функция, способная оживить текст!