Raffaele Cecco est un programmeur qui a produit certains des meilleurs jeux vidéo pour l’ ordinateur ZX Spectrum à la fin des années quatre-vingt. Il a notamment développé les très célèbres Cybernoid et Exolon .
Raffaele aura 50 ans le 10 mai 2017 . Ce défi est un petit hommage à lui, pour les heures heureuses que beaucoup d’entre nous ont passées à jouer à ces jeux extraordinaires et pour la motivation qu’ils ont apportée.
Le défi
Le but est de produire un chapiteau rectangulaire inspiré de celui du menu principal de Cybernoid , mais de l’art ASCII.
En particulier, la chaîne "Happy birthday Raffaele Cecco "
(notez l'espace final) sera représentée en rotation sur les bords d'un rectangle 12 × 5, avec un temps de pause constant entre les instantanés.
Par exemple, en supposant que le texte soit affiché dans le sens des aiguilles d'une montre et pivoté dans le sens contraire des aiguilles d'une montre (voir les options ci-dessous), voici trois instantanés consécutifs du rectangle de sélection rectangulaire:
Happy birthd
a
o y
c
ceC eleaffaR
puis
appy birthda
H y
o R
cceC eleaffa
puis
ppy birthday
a
H R
a
occeC eleaff
etc.
Règles
Aucune entrée ne sera prise. La sortie se fera par STDOUT ou équivalent, ou dans une fenêtre graphique.
La sortie devrait en fait représenter le texte en rotation; c'est-à-dire que chaque nouvel instantané doit écraser le précédent pour donner une impression de mouvement. Cela peut être fait par n'importe quel moyen, par exemple, en écrivant le nombre approprié de nouvelles lignes pour effacer efficacement l'écran. C’est acceptable si cela n’est valable que pour une taille d’écran donnée; spécifiez-le simplement dans la réponse.
Les options suivantes sont acceptées:
- Le texte peut être affiché dans le sens horaire ou anti-horaire, et tourné dans le sens horaire ou anti-horaire (les exemples d'instantanés ci-dessus supposent un affichage dans le sens horaire et une rotation dans le sens anti-horaire).
- La rotation doit continuer cycliquement dans une boucle infinie (jusqu'à ce que le programme soit arrêté) et peut commencer à n'importe quelle phase.
- Le temps de pause entre les instantanés doit être approximativement constant, mais peut être choisi librement entre 0,1 et 1 s. Une pause initiale avant d'afficher le premier instantané est acceptable.
- Les lettres peuvent être majuscules, minuscules ou mixtes (comme dans l'exemple ci-dessus).
- Les espaces vides de début ou de fin sont autorisés.
Les programmes ou fonctions sont autorisés, dans n'importe quel langage de programmation . Les échappatoires standard sont interdites.
Si possible, veuillez fournir un fichier gif montrant la sortie, ou un lien pour tester le programme.
Le code le plus court en octets gagne.