En l'honneur du jour de Star Wars , écrivez un programme pour afficher le texte suivant, défilant comme l' exploration d'ouverture 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...
Vous pouvez générer un GIF animé ou le faire afficher par votre programme. La sortie doit afficher les éléments suivants:
- Le texte doit commencer par le bas de l'image / affichage
- Il doit défiler vers le haut jusqu'à ce qu'il atteigne le sommet. Il faut au moins
30
quelques secondes pour qu'un morceau de texte atteigne le haut. L'animation doit continuer jusqu'à ce que tout le texte atteigne le haut. - Dans cette distance, le texte doit devenir plus petit jusqu'à ce qu'il soit inférieur à
1/3
la taille (longueur et police) - Le texte doit être incliné pour suivre cet angle.
- Le texte doit être justifié à gauche et à droite. Le texte donné est déjà justifié pour les polices à espacement fixe, cependant, vous pouvez supprimer les espaces supplémentaires (pas les retours à la ligne) et le justifier vous-même.
- Le texte doit être jaune
- Le fond doit être noir
Cette vidéo montre l'exploration d'ouverture.
Bonne chance, et que le quatrième soit avec toi !
Réponses:
HTML, 762
Type de saccadé (lire: extrêmement saccadé: P).
Voici un JSFiddle (avec des
-webkit-
préfixes de fournisseurs ajoutés pour qu'il fonctionne dans Chrome).la source
HTML / CSS, 1047
Je pourrais
-webkit
jouer au golf beaucoup plus en supprimant les préfixes, etc., mais cela suffira pour le moment:Démo en direct
la source
HTML + CSS + SVG
16141625Je voulais aussi être visuellement correct. SVG utilisé pour le masquage et l'animation. HTML + CSS utilisé pour les transformations. Je n'ai pas vérifié si le texte atteignait exactement 1/3 de la taille.
Affichage recommandé dans Chrome en raison du
-webkit-
préfixe. Nécessite des transformations CSS 3D pour fonctionner; vous devrez peut-être ouvrirchrome://flags
et sélectionner «Remplacer la liste de rendu des logiciels».Le bytecount comprend les sauts de ligne et les blancs.
Mise à jour 1: Ajout de la prise en charge de Firefox et d'autres navigateurs qui n'ont pas besoin de préfixes. Ajout de 11 octets même après un nettoyage supplémentaire. Le nettoyage a été possible parce que les navigateurs interprètent heureusement SVG en utilisant des analyseurs d'analyse HTML par opposition aux analyseurs compilant XML.
Vivre
la source
PerlMagick, programme 661 + 547 fichier texte = 1208
Trop tard pour l'anniversaire, mais OP a dit 'GIF animé', alors ...
TL; DR: un lien vers un GIF animé (5 Mo, 480 * 240, 1360 images) (il y a un faux départ chaque fois que j'essaie ce lien maintenant - il n'est pas dans le fichier, essayez peut-être de le télécharger d'abord. Et quelques légers scintillements ... peut-être que je l'expliquerai plus tard, - pas un morceau de gâteau, toute l'idée IM et GIF;)).
Avec des nouvelles lignes et un retrait pour la lisibilité:
Il lit le texte de STDIN, mais la géométrie est codée en dur, donc tout autre texte ne serait probablement pas une bonne idée. Il pourrait être plus court, mais j'ai ajouté un fondu au texte lorsqu'il arrive en haut et, en remontant d'un pixel, j'ai eu une animation saccadée, j'ai donc fait une interpolation. Il mange 2,2 Go de RAM et prend 2-3 minutes sur un bureau de 8 ans (et ne fonctionnera probablement pas pour les gens de Windows), alors voici comment obtenir un GIF: remplacez (ou ajoutez) la dernière ligne (crée 200+ Fichier Mb):
Et puis exécutez
Les compromis entre la qualité (taille de la palette, etc.) et la taille finale du GIF sont évidents. Appeler
$i->Remap
directement depuis PerlMagick ne fonctionne pas, il y a probablement un bogue, cela prend des heures car il (je pense) essaie en+remap
premier. En fait, une taille GIF raisonnable (seulement légèrement plus grande) peut être obtenue sans palette globale mais en utilisant$i->Quantize
ce qui réduit chaque palette locale de trame à la taille requise. Oh, et sans aucune optimisation de palette, c'est-à-dire que l'enregistrement du GIF à partir du script ci-dessus «tel quel» produit un fichier GIF d'environ 9 Mo.la source