En honor al día de Star Wars , escriba un programa para mostrar el siguiente texto, desplazándose como el rastreo de apertura de Star Wars :
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...
Puede generar un GIF animado o hacer que su programa lo muestre. La salida debe mostrar lo siguiente:
- El texto debe comenzar desde la parte inferior de la imagen / pantalla
- Debe desplazarse hacia arriba hasta llegar a la cima. Debe tomar al menos
30
segundos para que un texto llegue a la parte superior. La animación debe continuar hasta que todo el texto llegue a la parte superior. - En esta distancia, el texto debe ser más pequeño hasta que sea menor que
1/3
el tamaño (longitud y fuente) - El texto debe estar inclinado para seguir este ángulo.
- El texto debe estar justificado a izquierda y derecha. El texto proporcionado ya está justificado para fuentes monoespaciadas, sin embargo, puede eliminar los espacios adicionales (no líneas nuevas) y justificarlo usted mismo.
- El texto debe ser amarillo.
- El fondo debe ser negro.
Este video muestra el rastreo de apertura.
¡Buena suerte, y que el cuarto te acompañe!
Respuestas:
HTML, 762
Tipo de picado (léase: extremadamente picado: P).
Aquí hay un JSFiddle (con los
-webkit-
prefijos de proveedor agregados para que funcione en Chrome).fuente
HTML / CSS, 1047
Podría jugar mucho más al golf eliminando los
-webkit
prefijos, etc., pero esto lo hará por el momento:Demo en vivo
fuente
HTML + CSS + SVG
16141625Yo también quería ser visualmente correcto. SVG utilizado para enmascaramiento y animación. HTML + CSS utilizado para transformaciones. No verifiqué si el texto llega al tamaño exacto de 1/3.
Visualización recomendada en Chrome debido al
-webkit-
prefijo. Requiere transformaciones CSS 3D para funcionar; Es posible que deba abrirchrome://flags
y elegir 'Anular lista de renderizado de software'.En bytecount se incluyen líneas nuevas y espacios en blanco.
Actualización 1: Agregar soporte para Firefox y otros navegadores que no necesitan prefijos. Se agregaron 11 bytes incluso después de una limpieza adicional. La limpieza fue posible porque afortunadamente los navegadores interpretan SVG usando analizadores de procesamiento de HTML en lugar de analizadores compatibles con XML.
Vivir
fuente
PerlMagick, programa 661 + archivo de texto 547 = 1208
Demasiado tarde para el aniversario, pero OP dijo 'GIF animado', así que ...
TL; DR: un enlace a GIF animado (5 Mb, 480 * 240, 1360 cuadros) (hay un comienzo falso cada vez que pruebo este enlace ahora; no está en el archivo, tal vez intente descargarlo primero. Y algunos pequeños parpadeos) ... tal vez lo explique más tarde, - no es pan comido, toda la idea de IM y GIF;)).
Con nuevas líneas y sangría para facilitar la lectura:
Lee texto de STDIN, pero la geometría está codificada, por lo que probablemente cualquier otro texto no sería una buena idea. Podría ser más corto, pero agregué desvanecimiento al texto cuando llega a la parte superior y, al subir un solo píxel, se produjo una animación entrecortada, así que hice una interpolación. Consume 2,2 Gb de RAM y tarda 2-3 minutos en un escritorio de 8 años (y probablemente no funcionará para la gente de Windows), así que aquí está cómo obtener un GIF: reemplace (o agregue) la última línea (crea más de 200 Archivo Mb):
Y luego corre
Las compensaciones entre calidad (tamaño de paleta, etc.) y tamaño GIF final son obvias. Llamar
$i->Remap
desde PerlMagick directamente no funciona, probablemente haya un error, lleva horas mucho tiempo (creo) intenta+remap
primero. En realidad, se puede lograr un tamaño GIF razonable (solo un poco más grande) sin la paleta global, pero el uso$i->Quantize
reduce la paleta local de cada cuadro al tamaño requerido. Ah, y sin ninguna optimización de paleta, es decir, guardar el GIF del script anterior 'tal cual' produce un archivo GIF de aproximadamente 9 Mb.fuente