Écrivez le programme le plus court pour transformer n'importe quelle œuvre d'art ASCII en une scène de neige animée qui commence à se former à partir de la neige qui tombe ( exemple JavaScript non-golfé dernière mise à jour le 2011-12-19).
Spécification d'entrée : votre programme doit accepter des combinaisons arbitraires d'espaces, d'astérisques et de nouvelles lignes. L'entrée contiendra au maximum 23 lignes et 80 caractères par ligne. Il n'y aura pas de lignes vides, mais les lignes peuvent être constituées uniquement d'espaces. Une seule nouvelle ligne de fin sera incluse et doit être ignorée.
Sortie : affichez des caractères ASCII (espaces, astérisques) et des codes de contrôle (retours chariot, sauts de ligne, codes d'échappement ANSI, etc.) pour la console texte ou l'émulateur de terminal de votre système d'exploitation jusqu'à ce que l'utilisateur termine manuellement le programme. Vous pouvez supposer que la fenêtre du terminal contient 80 x 24 caractères si votre système d'exploitation autorise ce paramètre.
Règles :
- L'animation doit être fluide et rapide (15 ips de préférence).
- La densité de la neige doit être comprise entre 5% et 15%.
- Pas plus d'un écran de neige peut défiler par seconde. (Cela signifie qu'au plus 24 lignes de neige fraîche peuvent être ajoutées au cours d'une même période.)
- La neige ne doit présenter aucun motif évident lorsqu'elle pénètre en haut de l'écran; il doit avoir l'air aléatoire.
- Le programme doit remplir toutes les rangées de l'écran de neige le plus rapidement possible au démarrage; le remplissage initial des lignes individuelles de l'écran ne doit pas être évident pour le spectateur.
- Le coin inférieur gauche de l'art ASCII d'entrée doit être situé dans le coin inférieur gauche de l'écran (figure 1 pour plus de précisions).
- La zone à l'intérieur ou sous l'art ASCII ne doit pas être remplie en permanence d'astérisques. Cependant, les astérisques peuvent (mais ne sont pas obligatoires) faire défiler cette zone.
- La neige ne doit pas s'accumuler au bas de l'écran ou sur le dessus de la neige existante, sauf comme indiqué dans l'entrée.
- Les espaces inférieurs doivent être remplis avant les espaces supérieurs, car le remplissage des espaces dans l'ordre opposé rend l'animation de l'arbre de Noël très différente de la sortie de mon code d'origine. (ajouté le 2011-12-20)
Joyeuses fêtes!
Figure 1: zones étiquetées d'un écran 80x24
---------------------------New snow added on this line--------------------------
|
|
----------------------------------------------------------+ |
**** | |
Snow MUST fall Snow MAY fall ----------------> **** | |
through this through these **** **** | Snow MUST fall |
area. areas of a **** **** | through this |
completed \---------> **** ****| area. |
ASCII art scene. \ *** **** ****| |
area \ \ ******* **** ****| |
\ \ ******** *** ***| (ALL CAPS terms |
(located in \ \--> ********* *** | have standard |
lower left \ ******* ****** MAY | RFC 2119 |
corner of \ ************* ** fall | meanings.) |
screen) \ *********** here | |
*** +---> **** *** | |
*** | **************** *** | |
| Snow MUST fall *** | **************** *** | |
| through this *** +---> *** | |
| area. *** | **************** *** | |
--+---------------------+*** +---> ***+----+------------------+--
| Snow MUST NOT |****************************| Snow MUST NOT |
V accumulate here. |****************************| accumulate here. V
Exemples d'entrées
Code Golf Banner
****** ******* ******** ******** ****** ******* ** ********
** ** ** ** ** ** ** ** ** ** ** ** **
** ** ** ** ** ** ** ** ** ** **
** ** ** ** ** ****** ** **** ** ** ** ******
** ** ** ** ** ** ** ** ** ** ** **
** ** ** ** ** ** ** ** ** ** ** ** **
****** ******* ******** ******** ****** ******* ******** **
Logo de débordement de pile
****
****
**** ****
**** ****
**** ****
*** **** ****
******* **** ****
******** *** ***
********* ***
******* ******
************* **
***********
*** **** ***
*** **************** ***
*** **************** ***
*** ***
*** **************** ***
*** ***
****************************
****************************
Arbres de Noël
*
*** *
* ***** ***
*** ******* * *****
***** ********* *** *
* *********** *****
* ************* *******
* *** *************** * *
*** ***** ***************** ***
***** ******* ******************* *****
******* * ********************* *******
********* * *********
* *