Em homenagem ao dia de Guerra nas Estrelas , escreva um programa para exibir o seguinte texto, rolando como o rastreamento de abertura de Guerra nas Estrelas :
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...
Você pode gerar um GIF animado ou exibir seu programa. A saída deve mostrar o seguinte:
- O texto deve começar na parte inferior da imagem / exibição
- Ele deve rolar para cima até chegar ao topo. Deve levar pelo menos
30
segundos para um pedaço de texto chegar ao topo. A animação deve continuar até que todo o texto chegue ao topo. - A essa distância, o texto deve ficar menor até que seja menor que
1/3
o tamanho (comprimento e fonte) - O texto deve estar inclinado para seguir esse ângulo.
- O texto deve ser deixado à direita e justificado. O texto fornecido já está justificado para fontes monoespaçadas, no entanto, você pode remover os espaços extras (não as novas linhas) e justificar você mesmo.
- O texto deve ser amarelo
- O fundo deve ser preto
Este vídeo mostra o rastreamento de abertura.
Boa sorte, e que o quarto esteja com você !
Respostas:
HTML, 762
Meio instável (leia-se: extremamente instável: P).
Aqui está um JSFiddle (com
-webkit-
prefixos de fornecedores adicionados para que funcione no Chrome).fonte
HTML / CSS, 1047
Eu poderia jogar muito mais com a exclusão dos
-webkit
prefixos, etc., mas isso funcionará por enquanto:Demonstração ao vivo
fonte
HTML + CSS + SVG
16141625Eu também queria estar visualmente correto. SVG usado para mascaramento e animação. HTML + CSS usado para transformações. Não verifiquei se o texto atinge exatamente 1/3 do tamanho.
Visualização recomendada no Chrome devido ao
-webkit-
prefixo. Requer CSS 3D transforma para funcionar; pode ser necessário abrirchrome://flags
e selecionar 'Substituir lista de renderização de software'.Estão incluídas no bytecount novas linhas e espaços em branco.
Atualização 1: Adicionando suporte ao Firefox e outros navegadores que não precisam de prefixos. Adicionado 11 bytes, mesmo após limpeza adicional. A limpeza foi possível porque os navegadores, por sorte, interpretam o SVG usando analisadores de trituração de HTML em vez de analisadores de compilador de XML.
Viver
fonte
PerlMagick, programa 661 + 547 arquivos de texto = 1208
Tarde demais para o aniversário, mas o OP disse 'GIF animado', então ...
TL; DR: um link para o GIF animado (5 Mb, 480 * 240, 1360 quadros) (há um início falso cada vez que tento este link agora - ele não está no arquivo, talvez tente baixá-lo primeiro. ... talvez eu explique depois - não um pedaço de bolo, toda a ideia de mensagens instantâneas e GIF;)).
Com novas linhas e recuo para facilitar a leitura:
Ele lê texto de STDIN, mas a geometria é codificada, então provavelmente qualquer outro texto não seria uma boa idéia. Poderia ser mais curto, mas adicionei o desbotamento ao texto à medida que ele chega ao topo e, movendo-se por um único pixel, resultou em uma animação irregular, fiz uma interpolação. Ele consome 2,2 Gb de RAM e leva de 2 a 3 minutos em uma área de trabalho de 8 anos (e provavelmente não funcionará para os usuários do Windows), então veja como obter um GIF: substitua (ou adicione) a última linha (cria mais de 200 Mb):
E então corra
As trocas entre qualidade (tamanho da paleta etc.) e tamanho final do GIF são óbvias. Telefonar
$i->Remap
diretamente do PerlMagick não funciona, provavelmente há um bug, leva horas enquanto ele (eu acho) tenta+remap
primeiro. Na verdade, é possível obter um tamanho GIF razoável (apenas um pouco maior) sem a paleta global, mas usando o$i->Quantize
que reduz cada paleta local do quadro ao tamanho necessário. Ah, e sem nenhuma otimização da paleta, ou seja, salvar o GIF do script acima 'como está' produz cerca de 9 Mb de arquivo GIF.fonte