Schreiben Sie das kürzeste Programm, um aus jedem ASCII-Kunstwerk eine animierte Schneeszene zu machen, die sich aus dem fallenden Schnee zu formen beginnt ( JavaScript-Beispiel ohne Golfspiel, zuletzt aktualisiert am 19.12.2011).
Eingabespezifikation : Ihr Programm muss beliebige Kombinationen von Leerzeichen, Sternchen und Zeilenumbrüchen akzeptieren. Die Eingabe enthält höchstens 23 Zeilen und 80 Zeichen pro Zeile. Es werden keine Leerzeilen angezeigt, die Zeilen dürfen jedoch nur aus Leerzeichen bestehen. Eine einzelne nachgestellte Zeile wird eingefügt und muss ignoriert werden.
Ausgabe : Geben Sie ASCII-Zeichen (Leerzeichen, Sternchen) und Steuercodes (Zeilenumbrüche, Zeilenvorschübe, ANSI-Escape-Codes usw.) für die Textkonsole oder den Terminal-Emulator Ihres Betriebssystems aus, bis der Benutzer das Programm manuell beendet. Sie können davon ausgehen, dass das Terminalfenster 80 x 24 Zeichen umfasst, wenn Ihr Betriebssystem diese Einstellung zulässt.
Regeln :
- Die Animation muss flüssig und schnell sein (15 fps bevorzugt).
- Die Schneedichte muss zwischen 5% und 15% liegen.
- Es darf nicht mehr als ein Schneebildschirm pro Sekunde angezeigt werden. (Das bedeutet, dass in einem Zeitraum von einer Sekunde nicht mehr als 24 Zeilen Neuschnee hinzugefügt werden dürfen.)
- Der Schnee darf kein offensichtliches Muster aufweisen, wenn er oben auf dem Bildschirm eintritt. es muss zufällig aussehen.
- Das Programm muss alle Zeilen des Bildschirms so schnell wie möglich mit Schnee füllen, wenn es startet. Das anfängliche Füllen der einzelnen Zeilen des Bildschirms darf für den Betrachter nicht offensichtlich sein.
- Die untere linke Ecke der ASCII-Eingabekunst muss sich in der unteren linken Ecke des Bildschirms befinden (Abbildung 1 zur weiteren Verdeutlichung).
- Der Bereich innerhalb oder unter der ASCII-Grafik darf nicht dauerhaft mit Sternchen ausgefüllt sein. Sternchen können (müssen aber nicht) durch diesen Bereich scrollen.
- Schnee darf sich nicht am unteren Bildschirmrand oder auf vorhandenem Schnee ansammeln, außer wie in der Eingabe angegeben.
- Die unteren Felder müssen vor den oberen ausgefüllt werden, da das Ausfüllen der Felder in umgekehrter Reihenfolge dazu führt, dass die Weihnachtsbaumanimation sich stark von der Ausgabe meines ursprünglichen Codes unterscheidet. (hinzugefügt am 20.12.2011)
Schöne Ferien!
Abbildung 1: Beschriftete Bereiche eines 80x24-Bildschirms
---------------------------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
Beispieleingaben
Code Golf Banner
****** ******* ******** ******** ****** ******* ** ********
** ** ** ** ** ** ** ** ** ** ** ** **
** ** ** ** ** ** ** ** ** ** **
** ** ** ** ** ****** ** **** ** ** ** ******
** ** ** ** ** ** ** ** ** ** ** **
** ** ** ** ** ** ** ** ** ** ** ** **
****** ******* ******** ******** ****** ******* ******** **
Stapelüberlauf-Logo
****
****
**** ****
**** ****
**** ****
*** **** ****
******* **** ****
******** *** ***
********* ***
******* ******
************* **
***********
*** **** ***
*** **************** ***
*** **************** ***
*** ***
*** **************** ***
*** ***
****************************
****************************
Weihnachtsbäume
*
*** *
* ***** ***
*** ******* * *****
***** ********* *** *
* *********** *****
* ************* *******
* *** *************** * *
*** ***** ***************** ***
***** ******* ******************* *****
******* * ********************* *******
********* * *********
* *