В честь дня « Звездных войн» напишите программу для отображения следующего текста, прокручивая, как начальный обход « Звездных войн» :
It is a period of civil war. Rebel
spaceships, striking from a hidden
base, have won their first victory
against the evil Galactic Empire.
During the battle, Rebel spies managed
to steal secret plans to the Empire's
ultimate weapon, the Death Star, an
armored space station with enough
power to destroy an entire planet.
Pursued by the Empire's sinister agents,
Princess Leia races home aboard her
starship, custodian of the stolen plans
that can save her people and restore
freedom to the galaxy...
Вы можете вывести анимированный GIF или сделать так, чтобы ваша программа отображала его. Вывод должен показать следующее:
- Текст должен начинаться с нижней части изображения / дисплея
- Он должен прокручиваться вверх, пока не достигнет вершины. Требуется по крайней мере
30
несколько секунд, чтобы кусок текста достиг вершины. Анимация должна продолжаться, пока весь текст не достигнет вершины. - На этом расстоянии текст должен уменьшаться, пока не станет меньше
1/3
размера (длины и шрифта). - Текст должен быть наклонен, чтобы следовать этому углу.
- Текст должен быть выровнен по левому и правому краю. Данный текст уже оправдан для моноширинных шрифтов, однако вы можете удалить лишние пробелы (не переводы строк) и обосновать его самостоятельно.
- Текст должен быть желтым
- Фон должен быть черным
Это видео показывает начальное сканирование.
Удачи, и пусть четвертый будет с вами !
Ответы:
HTML, 762
Вид изменчивый (читай: чрезвычайно изменчивый: P).
Вот JSFiddle (с
-webkit-
добавленными префиксами вендора, чтобы он работал в Chrome).источник
HTML / CSS, 1047
Я мог бы поиграть в эту игру намного больше, удалив
-webkit
префиксы и т. Д., Но пока это подойдет:Live демо
источник
HTML + CSS + SVG
16141625Я тоже хотел быть визуально правильным. SVG используется для маскировки и анимации. HTML + CSS используется для преобразований. Я не проверял, достигает ли текст ровно 1/3 размера.
Рекомендуется просматривать в Chrome из-за
-webkit-
префикса. Требует CSS 3D преобразования для работы; вам может потребоваться открытьchrome://flags
и выбрать «Переопределить список программного рендеринга».В bytecount включены новые строки и пробелы.
Обновление 1: добавлена поддержка Firefox и других браузеров, которым не нужны префиксы. Добавлено 11 байт даже после дальнейшей очистки. Очистка стала возможной, потому что браузеры, к счастью, интерпретируют SVG, используя синтаксические анализаторы HTML, в отличие от XML-компиляторов.
Прямой эфир
источник
PerlMagick, 661 программа + 547 текстовый файл = 1208
Слишком поздно для юбилея, но ОП сказал «анимированный GIF», так что ...
TL; DR: ссылка на анимированный GIF (5 Мб, 480 * 240, 1360 кадров) (каждый раз, когда я пробую эту ссылку, происходит фальстарт - ее нет в файле, возможно, сначала попробуйте загрузить ее. И небольшое мерцание ... может быть, я объясню это позже, - не кусок пирога, вся идея IM и GIF;)).
С переводом строки и отступом для удобства чтения:
Он читает текст из STDIN, но геометрия жестко запрограммирована, поэтому, вероятно, любой другой текст не будет хорошей идеей. Это может быть короче, но я добавил к тексту затухание, когда оно достигнет вершины, и, поднявшись на один пиксель вверх, я получил прерывистую анимацию, поэтому я выполнил некоторую интерполяцию. Он потребляет 2,2 ГБ ОЗУ и занимает 2-3 минуты на 8-летнем рабочем столе (и, вероятно, не будет работать для людей с Windows), так что вот как получить GIF: заменить (или добавить) последнюю строку (создает 200+ Мб файл):
А потом беги
Компромиссы между качеством (размер палитры и т. Д.) И конечным размером GIF очевидны. Вызов
$i->Remap
из PerlMagick напрямую не работает, возможно, есть ошибка, она занимает несколько часов, так как он (я думаю) пытается+remap
первым. На самом деле, разумный (только немного больший) размер GIF может быть достигнут без глобальной палитры, но с использованием,$i->Quantize
которое уменьшает локальную палитру каждого кадра до требуемого размера. Да, и без каких-либо оптимизаций палитры, то есть сохранение GIF из приведенного выше скрипта «как есть» дает около 9 Мб GIF-файла.источник