Raffaele Cecco es un programador que produjo algunos de los mejores videojuegos para la computadora ZX Spectrum a fines de los años ochenta. Entre otros, desarrolló el aclamado Cybernoid y Exolon .
Raffaele cumple 50 años el 10 de mayo de 2017 . Este desafío es un pequeño homenaje a él, por las horas felices que muchos de nosotros pasamos jugando esos juegos fabulosos, y por la motivación que trajeron.
El reto
El propósito es producir una carpa rectangular inspirada en la que se ve en la pantalla del menú principal de Cybernoid , pero en el arte ASCII.
Específicamente, la cadena "Happy birthday Raffaele Cecco "
(tenga en cuenta el espacio final) se mostrará girando a lo largo de los bordes de un rectángulo de 12 × 5, con un tiempo de pausa constante entre las instantáneas.
Por ejemplo, suponiendo que el texto se muestre en el sentido de las agujas del reloj y se gire en sentido contrario (consulte las opciones a continuación), aquí hay tres instantáneas consecutivas de la marquesina rectangular:
Happy birthd
a
o y
c
ceC eleaffaR
luego
appy birthda
H y
o R
cceC eleaffa
luego
ppy birthday
a
H R
a
occeC eleaff
y así.
Reglas
No se tomará ninguna entrada. La salida será a través de STDOUT o equivalente, o en una ventana gráfica.
La salida en realidad debería representar el texto girando; es decir, cada nueva instantánea debe sobrescribir la anterior para dar la impresión de movimiento. Esto puede hacerse por cualquier medio, por ejemplo, escribiendo el número apropiado de nuevas líneas para borrar la pantalla de manera efectiva. Es aceptable si esto es válido solo para un tamaño de pantalla dado; solo especifícalo en la respuesta.
Se aceptan las siguientes opciones:
- El texto se puede mostrar en el sentido de las agujas del reloj o en sentido contrario, y se puede girar en el sentido de las agujas del reloj o en sentido contrario (las instantáneas de ejemplo anteriores suponen que se muestran en el sentido de las agujas del reloj y en sentido contrario).
- La rotación debe continuar cíclicamente en un bucle infinito (hasta que se detenga el programa), y puede comenzar en cualquier fase.
- El tiempo de pausa entre las instantáneas debe ser aproximadamente constante, pero se puede elegir libremente entre 0.1 y 1 s. Es aceptable una pausa inicial antes de mostrar la primera instantánea.
- Las letras pueden ser mayúsculas, minúsculas o mixtas (como en el ejemplo anterior).
- Se permite el espacio en blanco inicial o final.
Se permiten programas o funciones , en cualquier lenguaje de programación . Las lagunas estándar están prohibidas.
Si es posible, proporcione un archivo gif que muestre el resultado o un enlace para probar el programa.
El código más corto en bytes gana.