编写最短的程序,将任何ASCII艺术作品转换成动画的雪景,然后从下雪开始形成雪景(非高尔夫JavaScript示例最后更新于2011-12-19)。
输入规范:您的程序必须接受空格,星号和换行符的任意组合。输入最多包含23行,每行80个字符。将没有空行,但行可能仅包含空格。仅包含一个尾随的换行符,必须将其忽略。
输出:为您的操作系统的文本控制台或终端仿真器输出ASCII字符(空格,星号)和控制代码(回车,换行符,ANSI转义代码等),直到用户手动终止程序为止。如果操作系统允许该设置,则可以假定终端窗口为80x24个字符。
规则:
- 动画必须流畅且快速(首选15 fps)。
- 雪密度必须在5%到15%之间。
- 每秒最多滚动不超过一个屏幕的雪。(这意味着在任何一秒钟的时间内最多只能添加24行新雪。)
- 进入屏幕顶部时,雪花不得显示任何明显的图案;它必须看起来是随机的。
- 该程序启动时必须尽快将屏幕上的所有行都积雪。屏幕的各个行的初始填充对于查看者而言不应是显而易见的。
- 输入ASCII文字的左下角必须位于屏幕的左下角(图1进行了进一步说明)。
- ASCII图形内部或下方的区域不得永久性地加星号。但是,星号可以(但不是必须)滚动通过该区域。
- 除输入内容外,雪不得堆积在屏幕底部或现有雪的顶部。
- 下部空间必须在上部空间之前填充,因为相反的填充空间使圣诞树动画看起来与原始代码的输出完全不同。(添加2011-12-20)
节日快乐!
图1: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
输入示例
代码高尔夫横幅
****** ******* ******** ******** ****** ******* ** ********
** ** ** ** ** ** ** ** ** ** ** ** **
** ** ** ** ** ** ** ** ** ** **
** ** ** ** ** ****** ** **** ** ** ** ******
** ** ** ** ** ** ** ** ** ** ** **
** ** ** ** ** ** ** ** ** ** ** ** **
****** ******* ******** ******** ****** ******* ******** **
堆栈溢出徽标
****
****
**** ****
**** ****
**** ****
*** **** ****
******* **** ****
******** *** ***
********* ***
******* ******
************* **
***********
*** **** ***
*** **************** ***
*** **************** ***
*** ***
*** **************** ***
*** ***
****************************
****************************
圣诞树
*
*** *
* ***** ***
*** ******* * *****
***** ********* *** *
* *********** *****
* ************* *******
* *** *************** * *
*** ***** ***************** ***
***** ******* ******************* *****
******* * ********************* *******
********* * *********
* *