Escreva o programa mais curto para transformar qualquer peça de arte ASCII em uma cena de neve animada que comece a se formar a partir da neve que cai ( exemplo de JavaScript sem golfe ) atualizado pela última vez em 2011-12-19).
Especificação de entrada : Seu programa deve aceitar combinações arbitrárias de espaços, asteriscos e novas linhas. A entrada conterá no máximo 23 linhas e 80 caracteres por linha. Não haverá linhas vazias, mas as linhas podem consistir apenas em espaço em branco. Uma única nova linha à direita será incluída e deve ser ignorada.
Saída : Saída de caracteres ASCII (espaços, asteriscos) e códigos de controle (retornos de carro, alimentações de linha, códigos de escape ANSI, etc.) para o console de texto do sistema operacional ou emulador de terminal até o usuário finalizar manualmente o programa. Você pode supor que a janela do terminal tenha 80x24 caracteres se o seu sistema operacional permitir essa configuração.
Regras :
- A animação deve ser suave e rápida (preferencialmente 15 qps).
- A densidade da neve deve estar entre 5% e 15%.
- Não mais do que uma tela de neve pode rolar por segundo. (Isso significa que não é possível adicionar mais de 24 linhas de neve nova em um segundo período de tempo.)
- A neve não deve exibir nenhum padrão óbvio quando entra na parte superior da tela; deve parecer aleatório.
- O programa deve preencher todas as linhas da tela com neve o mais rápido possível quando for iniciado; o preenchimento inicial das linhas individuais da tela não deve ser óbvio para o visualizador.
- O canto inferior esquerdo da arte ASCII de entrada deve estar no canto inferior esquerdo da tela (Figura 1 para maiores esclarecimentos).
- A área dentro ou sob a arte ASCII não deve ser permanentemente preenchida com asteriscos. No entanto, os asteriscos podem (mas não precisam) rolar por essa área.
- A neve não deve acumular-se na parte inferior da tela ou em cima da neve existente, exceto conforme mostrado na entrada.
- Os espaços inferiores devem ser preenchidos antes dos superiores, pois o preenchimento de espaços na ordem oposta faz com que a animação da árvore de Natal pareça muito diferente da saída do meu código original. (adicionado 20-12-2011)
Boas festas!
Figura 1: áreas rotuladas de uma tela 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
Entradas de Exemplo
Código Golf Banner
****** ******* ******** ******** ****** ******* ** ********
** ** ** ** ** ** ** ** ** ** ** ** **
** ** ** ** ** ** ** ** ** ** **
** ** ** ** ** ****** ** **** ** ** ** ******
** ** ** ** ** ** ** ** ** ** ** **
** ** ** ** ** ** ** ** ** ** ** ** **
****** ******* ******** ******** ****** ******* ******** **
Logotipo do estouro de pilha
****
****
**** ****
**** ****
**** ****
*** **** ****
******* **** ****
******** *** ***
********* ***
******* ******
************* **
***********
*** **** ***
*** **************** ***
*** **************** ***
*** ***
*** **************** ***
*** ***
****************************
****************************
Árvores de Natal
*
*** *
* ***** ***
*** ******* * *****
***** ********* *** *
* *********** *****
* ************* *******
* *** *************** * *
*** ***** ***************** ***
***** ******* ******************* *****
******* * ********************* *******
********* * *********
* *