Scrivi il programma più breve per trasformare qualsiasi pezzo di arte ASCII in una scena di neve animata che inizia a formarsi dalla neve che cade ( esempio JavaScript non golfato ultimo aggiornamento 2011-12-19).
Specifica di input : il programma deve accettare combinazioni arbitrarie di spazi, asterischi e newline. L'input conterrà al massimo 23 righe e 80 caratteri per riga. Non ci saranno righe vuote, tuttavia le righe possono essere composte solo da spazi bianchi. Verrà inclusa una nuova riga finale finale che deve essere ignorata.
Output : Output caratteri ASCII (spazi, asterischi) e codici di controllo (ritorni a capo, avanzamenti riga, codici di escape ANSI, ecc.) Per la console di testo o l'emulatore di terminale del sistema operativo fino a quando l'utente non termina manualmente il programma. È possibile supporre che la finestra del terminale sia di 80x24 caratteri se il sistema operativo consente tale impostazione.
Regole :
- L'animazione deve essere fluida e veloce (preferibilmente 15 fps).
- La densità della neve deve essere compresa tra il 5% e il 15%.
- Non più di uno schermo di neve può scorrere al secondo. (Ciò significa che non è possibile aggiungere più di 24 linee di neve fresca in un secondo periodo di tempo.)
- La neve non deve mostrare alcun motivo evidente quando entra nella parte superiore dello schermo; deve apparire casuale.
- Il programma deve riempire tutte le file dello schermo di neve il più rapidamente possibile all'avvio; il riempimento iniziale delle singole righe dello schermo non deve essere ovvio per lo spettatore.
- L'angolo inferiore sinistro della grafica ASCII di input deve trovarsi nell'angolo inferiore sinistro dello schermo (Figura 1 per ulteriori chiarimenti).
- L'area all'interno o sotto l'arte ASCII non deve essere riempita permanentemente di asterischi. Tuttavia, gli asterischi possono (ma non sono tenuti a) scorrere in quest'area.
- La neve non deve accumularsi nella parte inferiore dello schermo o sopra la neve esistente ad eccezione di quanto mostrato nell'input.
- Gli spazi inferiori devono essere riempiti prima di quelli superiori, poiché riempire gli spazi nell'ordine opposto rende l'animazione dell'albero di Natale molto diversa dall'output del mio codice originale. (aggiunto il 20-12-2011)
Buone vacanze!
Figura 1: aree etichettate di uno schermo 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
Input di esempio
Banner da golf codice
****** ******* ******** ******** ****** ******* ** ********
** ** ** ** ** ** ** ** ** ** ** ** **
** ** ** ** ** ** ** ** ** ** **
** ** ** ** ** ****** ** **** ** ** ** ******
** ** ** ** ** ** ** ** ** ** ** **
** ** ** ** ** ** ** ** ** ** ** ** **
****** ******* ******** ******** ****** ******* ******** **
Logo Stack Overflow
****
****
**** ****
**** ****
**** ****
*** **** ****
******* **** ****
******** *** ***
********* ***
******* ******
************* **
***********
*** **** ***
*** **************** ***
*** **************** ***
*** ***
*** **************** ***
*** ***
****************************
****************************
Alberi di Natale
*
*** *
* ***** ***
*** ******* * *****
***** ********* *** *
* *********** *****
* ************* *******
* *** *************** * *
*** ***** ***************** ***
***** ******* ******************* *****
******* * ********************* *******
********* * *********
* *