Raffaele Cecco é um programador que produziu alguns dos melhores videogames para o computador ZX Spectrum no final dos anos 80. Entre outros, ele desenvolveu o altamente aclamado Cybernoid e Exolon .
Raffaele completará 50 anos em 10 de maio de 2017 . Esse desafio é uma pequena homenagem a ele, pelas horas felizes que muitos de nós passamos jogando nesses jogos fantásticos e pela motivação que eles trouxeram.
O desafio
O objetivo é produzir uma marca de seleção retangular inspirada na tela do menu principal do Cybernoid , mas na arte ASCII.
Especificamente, a sequência "Happy birthday Raffaele Cecco "
(observe o espaço final) será mostrada girando ao longo das bordas de um retângulo 12 × 5, com um tempo de pausa constante entre os instantâneos.
Por exemplo, supondo que o texto seja exibido no sentido horário e girado no sentido anti-horário (veja as opções abaixo), aqui estão três instantâneos consecutivos da marca de seleção retangular:
Happy birthd
a
o y
c
ceC eleaffaR
então
appy birthda
H y
o R
cceC eleaffa
então
ppy birthday
a
H R
a
occeC eleaff
e assim por diante.
Regras
Nenhuma entrada será aceita. A saída será através de STDOUT ou equivalente, ou em uma janela gráfica.
A saída deve realmente representar o texto girando; isto é, cada novo instantâneo deve substituir o anterior para dar a impressão de movimento. Isso pode ser feito de qualquer maneira, por exemplo, escrevendo o número apropriado de novas linhas para limpar efetivamente a tela. É aceitável se isso for válido apenas para um determinado tamanho de tela; basta especificá-lo na resposta.
As seguintes opções são aceitas:
- O texto pode ser exibido no sentido horário ou anti-horário e pode ser girado no sentido horário ou anti-horário (os exemplos de instantâneos acima pressupõem exibição no sentido horário e rotação no sentido anti-horário).
- A rotação deve continuar ciclicamente em um loop infinito (até que o programa seja interrompido) e pode iniciar em qualquer fase.
- O tempo de pausa entre os instantâneos deve ser aproximadamente constante, mas pode ser escolhido livremente entre 0,1 e 1 s. Uma pausa inicial antes de exibir o primeiro instantâneo é aceitável.
- As letras podem ser maiúsculas, minúsculas ou mistas (como no exemplo acima).
- O espaço em branco à esquerda ou à direita é permitido.
Programas ou funções são permitidos, em qualquer linguagem de programação . As brechas padrão são proibidas.
Se possível, forneça um arquivo gif mostrando a saída ou um link para testar o programa.
O menor código em bytes vence.